有没有简单的方法来调试* nix中的分叉子进程,而不必让他们睡觉并创建新的gdb实例,使用ps来获取孩子的pid?是否有任何调试器可以执行此操作?
答案 0 :(得分:6)
您已经可以使用gdb
执行此操作。方法如下:
(gdb) set detach-on-fork off
(gdb) set follow-fork-mode child
(gdb) catch fork # use breakpoint if catch fork not available
然后在某些时候你会到达你的叉子。跳过它,gdb
应该通知你有一个新的过程。
[New process 813]
此时你应该查看“下级”
(gdb) info inferiors
Num Description Executable
* 2 process 813 /home/cnicutar/fork
1 process 810 /home/cnicutar/fork
要切换到不同的下级,请使用
(gdb) inferior 1
[Switching to inferior 1 [process 810] (/home/cnicutar/fork)]
[Switching to thread 1 (process 810)]
(gdb) info inferiors
Num Description Executable
2 process 813 /home/cnicutar/fork
* 1 process 810 /home/cnicutar/fork
希望这会有所帮助: - )