gdb多进程多线程调试

一 .fork子进程后的调试状态

 fork子进程后的调试状态与两个选项相关,follow-fork-mode(默认值:parent) 和 detach-on-fork(默认值:on)
follow-fork-modedetach-on-forkfork后的调试状态
parenton只调试父进程
childon只调试子进程
parentoff父子进程都调试,gdb当前调式父进程,子进程暂挂在fork后
childoff父子进程都调试,gdb当前调式子进程,父进程暂挂在fork后

二 .多进程调试命令 inferiors

查询正在调试的进程:info inferiors

 (gdb) info inferiors
  Num  Description       Executable        
  3    <null>            /home/read_ng/c_workplace/proc_gdb/test 
* 2    process 17619     /home/read_ng/c_workplace/proc_gdb/test 
  1    process 17594     /home/read_ng/c_workplace/proc_gdb/test

切换调 试的进程: inferior

 (gdb) inferior 3
[Switching to inferior 3 [process 0] (/home/read_ng/c_workplace/proc_gdb/test)]
(gdb) 

启动新进程,并加入到当前的调试:
add-inferior [-copies n] [-exec executable]
n表示执行次数,executable表示可执行文件

(gdb)  add-inferior -exec ./test
Added inferior 4
Reading symbols from /home/read_ng/c_workplace/proc_gdb/test...done.
(gdb) 

脱离调试进程:detach inferior infno
不再调试进程 infno, 此进程会继续执行

kill掉调试进程: kill inferior infno
不再调试进程 infno, 此进程会被杀死

detach 或者kill掉一个inferior后,执行info inferiors 还会显示此inferior,如果执行此 run infno,会按照之前的这个inferior重新启动并调试此inferior;
或者直接执行remove-inferior infno, 之后执行info inferiors 显不会再显示此inferior

三 .多线程调试

1.non-stop 模式
当一个线程遇到断点挂住时,其它线程不受影响,继续执行

2.all-stop mod
当一个线程遇到断点挂住时,其它线程也挂住
scheduler-locking mode [on | off | step]
on:当前线程恢复运行时(如执行next),所有线程都恢复运行
off:当前线程恢复运行时,其它线程保持挂住状态
step:当前线程执行单步调试时(step,或者next 非函数调用),只有本线程恢复执行, 执行continue(或者其它非单步调试执行)时,所有线程恢复执行
schedule-multiple mode [on | off]
on 当前线程恢复时,其它进程的线程和本进程的线程同时恢复执行
off 当前线程恢复时,不会导致其它进程的线程恢复执行

四.常用调试命令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值