2016-12-02 7 views
0

Как и сказано выше. Программа должна быть вызвана последовательно с другими, с помощью сценария, и я хотел бы, чтобы она запускалась автоматически, чтобы она была максимально верна фактическим условиям работы.Как я могу запустить gdbserver для запуска целевой программы при запуске?

Редактировать

Я не смог найти ответ на этот вопрос, но только в том случае, если кто приходит смотрит вот как я работал вокруг него, так как я имел доступ к БГД и экран на мишени ,

screen -d -m gdb -x debugstart 

где debugstart является простой скрипт, содержащий:

file program 
r 

это запустит сеанс экрана и запуска GDB в нем, который начинает выполнение вашей программы, а затем detatch с этого экрана сессии, так что вы можете просто screen -r, когда вам нужно посмотреть отладчик.

ответ

0

Вы не объясняете, почему вы хотите, чтобы GDB отслеживал вашу программу, и я предполагаю, что она должна ловить ошибки во время выполнения (например, сигналы фатальных ошибок), что является хорошей практикой в ​​случае труднопроизносимых ошибок.

Таким образом, один из способов - запустить gdbserver, используя опцию --multi. Затем вы сможете удаленно запустить свою программу, а затем остановить ее выполнение, нажав ctrlc (или команда interrupt).

Запуск gdbserver

$ gdbserver --multi <server address> 

GDB сценарий:

target extended-remote <server address> 
remote put <your program> 
set remote exec-file <your program> 
# you could pre-set breakpoints, or whatever 
run 
# ctrl-c to interrupt the execution of the started process 

В противном случае, вы можете просто запустить программу, а затем удаленно подключиться к нему с gdbserver --attach при необходимости.

+0

Как вы догадались, я пытался уловить фатальную ошибку. Однако эта ошибка только когда-либо возникала, если она была вызвана во время запуска системы, поэтому не было возможности запустить gdbserver -attach до того, как она потерпит крах. Я не уверен, что gdbserver был правильным выбором в любом случае. –