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

wha*_*ist 3 c unix debugging fork

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

cni*_*tar 6

你已经可以使用了gdb.方法如下:

(gdb) set detach-on-fork off
(gdb) set follow-fork-mode child
(gdb) catch fork # use breakpoint if catch fork not available
Run Code Online (Sandbox Code Playgroud)

然后在某些时候你会到达你的叉子.跳过它,gdb应该通知你有一个新的过程.

[New process 813]
Run Code Online (Sandbox Code Playgroud)

此时你应该查看"下级"

(gdb) info inferiors
  Num  Description       Executable
* 2    process 813       /home/cnicutar/fork
  1    process 810       /home/cnicutar/fork
Run Code Online (Sandbox Code Playgroud)

要切换到不同的劣势,请使用

(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
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 :-)