我正在使用gdb调试程序。每当我错过断点或决定添加另一个观察点时,我必须终止该过程并重新运行它。为了将现有的gdb附加到它,我使用attach <pid>
。但是,我必须找出新流程的pid。
我今天这样做的方法是暂停gdb,使用ps -C <program_name>
获取pid,然后返回gdb以附加到它。
有没有办法从gdb命令提示符运行unix命令而不退出shell,这样我就可以在gdb里面做这样的事情了:
attach `ps -C <program_name>`
我正在使用linux。
答案 0 :(得分:19)
(gdb)帮助shell
执行其余的 该行作为shell命令。没有 参数,运行劣质外壳。
完成后,您可以使用'exit'返回gdb。
答案 1 :(得分:12)
gdb$ shell
shell$ execute_your_commands
shell$ exit
gdb$ you_have_returned_back_to_gdb_prompt
答案 2 :(得分:5)
您可以使用shell
后跟要执行的命令,例如:
gdb$ shell g++ tsort.c -o tsort
这只是上一个答案的简短形式。
答案 3 :(得分:2)
为了扩展已接受的答案,shell
的快捷方式为!
。
(gdb)帮助!
执行该行的其余部分作为shell命令。没有争论, 打败劣质的外壳。