稍微更新("new",如"it's been in gdb at least 10 years")方式是编辑脚本并在调用要调试的程序之前放置 gdb --args . 此方法除了其他方面外,还没有正确处理重定向 .
最后,您可以使用多次调试 . 这是所有人的方法 . 在这里,我关注的主题是:#1475189_:
$ gdb /bin/sh # or whatever runs your script
(gdb) set args arguments-to-the-script
(gdb) set detach-on-fork off
(gdb) set target-async on
(gdb) set non-stop on
(gdb) set pagination off
2 回答
有几种方法 .
真正老派的方式是破解你的程序的循环
main
,如:然后,运行您的脚本 . 在单独的窗口中,在要调试的程序上运行gdb,并使用
attach
附加到休眠程序 . 然后你可以设置断点等,最后:稍微更新("new",如"it's been in gdb at least 10 years")方式是编辑脚本并在调用要调试的程序之前放置
gdb --args
. 此方法除了其他方面外,还没有正确处理重定向 .最后,您可以使用多次调试 . 这是所有人的方法 . 在这里,我关注的主题是:#1475189_:
然后你可以这样做:
...然后切换到那个劣势并设置断点 . 现在切换回第一个劣势和
run
- 它应该全部工作!我过去使用过的几种方法 .
将
yourprog
重命名为yourprog.real
. 创建一个名为yourprog
的脚本,该脚本运行gdb --args yourprog.real "$@"
.使
yourprog
在其自己的pid
上调用gdb
,然后在循环中调用sleep
.