调试* nix中的多个分叉进程

时间:2011-09-25 08:08:07

标签: c debugging unix fork

有没有简单的方法来调试* nix中的分叉子进程,而不必让他们睡觉并创建新的gdb实例,使用ps来获取孩子的pid?是否有任何调试器可以执行此操作?

1 个答案:

答案 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

希望这会有所帮助: - )