如何让gdbserver在启动时运行目标程序?

时间:2016-12-02 14:08:48

标签: gdb remote-debugging gdbserver

就像上面说的那样。程序需要与其他程序一起按顺序调用,并且我希望自动运行它以使其尽可能真实地运行。

修改

我无法找到答案,但万一有人来这里看看我是如何解决这个问题的,因为我可以访问目标上的gdb和屏幕。

screen -d -m gdb -x debugstart

其中debugstart是一个包含以下内容的简单脚本:

file program
r

这将启动一个屏幕会话并在其中启动gdb,它开始运行您的程序,然后从该屏幕会话中分离,这样当您需要查看调试器时,您可以 screen -r

1 个答案:

答案 0 :(得分:0)

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

因此,一种方法是使用gdbserver选项运行--multi。然后,您可以远程运行程序,然后按 ctrl c (或命令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远程连接到该程序。