就像上面说的那样。程序需要与其他程序一起按顺序调用,并且我希望自动运行它以使其尽可能真实地运行。
修改
我无法找到答案,但万一有人来这里看看我是如何解决这个问题的,因为我可以访问目标上的gdb和屏幕。
screen -d -m gdb -x debugstart
其中debugstart是一个包含以下内容的简单脚本:
file program
r
这将启动一个屏幕会话并在其中启动gdb,它开始运行您的程序,然后从该屏幕会话中分离,这样当您需要查看调试器时,您可以 screen -r 。
答案 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
远程连接到该程序。