2016-12-02 106 views
0

就像上面说的那样。该程序需要依次与其他人通过脚本调用,并且我想让它自动运行,以便尽可能真实地符合实际运行条件。如何让gdbserver在启动时运行目标程序?

编辑

我没能找到一个答案,但以防万一有人来寻找这里就是我的工作围绕它,因为我有目标进入GDB和屏幕。

screen -d -m gdb -x debugstart 

其中debugstart是包含一个简单的脚本:

file program 
r 

这将启动屏幕会话,并在它启动gdb其开始运行您的程序,然后从屏幕会话detatch所以你可以屏幕-r当你需要看看调试器。

回答

0

你不解释你为什么要GDB跟踪你的程序,我想它是在运行时(例如致命错误的信号)捕获错误,这是一个很好的做法,以防止可重现的错误。

因此,一种方法是使用选项--multi运行gdbserver。然后,您将能够远程运行您的程序,然后按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是否正确。 –