parent
on
只调试父进程
child
on
只调试子进程
parent
off
同时调试两个进程,gdb跟父进程,子进程block在fork位置
child
off
同时调试两个进程,gdb跟子进程,父进程block在fork位置
① show follow-fork-mode:查看当前调试的fork模式,如下图,默认为父进程,如果想设置为子进程,可以使用set follow-fork-mode child。
② show detach-on-fork:查看detach-on-fork的模式。设置为on表示只调试父子进程(与①的设置有关)中的一个,off表示父子进程都在gdb的控制之下,其中一个进程正常调试另一个进程会被设置为暂停状态。
③ info inferiors:显示gdb调试的所有进程。inferior [进程编号]:可以切换到特定的inferiors进行调试。其中*代表正在调试的进程。
④ maint info program-spaces:显示当前gdb一共管理了多少地址空间。
⑤ detach inferior [进程编号]:detach掉某一进程的编号,但是这个进程还存在,让它自由运行完,detach掉的进程会显示null。
⑥ kill inferior [进程编号]:kill掉某进程,但是此进程还存在,可再次使用run等命令执行它,被kill掉的进程会显示null。
⑦ remove-inferior [进程编号]:删除某一个inferior。如果该inferior正在运行,则不能删除,因此删除之前必须先kill或detach掉。
⑧ set schedule-multiple:设置为off表示只有当前的inferior会被执行,设置为on,表示所有执行状态的inferior都会被执行。
⑨ set print interior-events on/off:用来打开和关闭inferior状态的提示信息。
当然,gdb多线程的断点、单步调试、运行等命令同样适用于多进程的调试,这里也就不一一列举了。上述仅仅是一些常用命令的举例,想了解其他命令请自己动手尝试。