gdb pid 线程_gdb多线程/多进程(守护进程)调试

一 调试多进程

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上去后都不知道运行到哪里了。一个办法是,在要调试的

你可能感兴趣的:(gdb,pid,线程)