先前我们初步了解了一些有关gdb调试的基本命令,今天我们尝试着用它来调试多进程,看看在调试过程中如何使用gdb的一些高级命令。
gdb调试多进程
1. 默认设置下,在调试多进程程序时gdb只会调试父进程,但是为了可以对父进程和子进程都做到调试,gdb新版本就附加了调试子进程的功能。但需要设置follow-fork-mode(默认值:parent) 和 detach-on-fork(默认值:on),后面将会详细进行描述。
在调试之前我们先来看一些多进程调试的命令:
(1) set follow-fork-mode parent|child: 进入gdb后默认调试的是parent,要想调试child的话,需要设置set follow-fork-mode child,然后进入调试。当然这种方式只能同时调试一个进程,下面将进一步说明。
show follow-fork-mode:查看当前调试的fork的模式。
(2)detach-on-fork on|off:
- 设置为on的话,只调试父进程或子进程其中一个,需要根据follow-fork-mode决定,这是默认模式。
- 设置成off的话,父子进程都在gdb的控制之下,其中一个进程正常调试,需要根据follow-fork-mode决定,另一个则会被设置为暂停状态。
以上两个设置调试模式的命令有以下关系:
follow-fork-mode
parent