一 调试多进程
1) follow-fork-mode :
set follow-fork-mode [parent|child]
parent: fork之后继续调试父进程,子进程不受影响。
child: fork之后调试子进程,父进程不受影响。
在使用如下方法设置完要调试的程序后:
gdb命令行的 –-args 参数
gdb环境中 set args命令。
gdb --pid=PID(ps -ef | grep your_prog)
如果需要调试子进程,在启动gdb后:
(gdb) set follow-fork-mode child
并在子进程代码设置断点。
此外还有detach-on-fork参数,指示GDB在fork之后是否断开(detach)某个进程的调试,或者都交由GDB控制:
set detach-on-fork [on|off]
on: 断开调试follow-fork-mode指定的进程。
off: gdb将控制父进程和子进程。follow-fork-mode指定的进程将被调试,另一个进程置于暂停(suspended)状态。
由于follow-fork-mode的调试必然是从父进程开始的,对于fork多次,调试起来并不方便。
2) attach调试:
GDB有附着(attach)到正在运行的进程的功能,即attach 命令。因此可以利用该命令attach到子进程然后进行调试。通过ps和pstree可以查看到所要调试的子进程pid。
问题是,子进程一直在运行,attach上去后都不知道运行到哪里了。一个办法是,在要调试的