Linux gdb子进程和多进程调试 - 猿码设计师 follow-fork-mode

Linux gdb子进程和多进程调试 - 猿码设计师 follow-fork-mode默认情况下,父进程fork一个子进程,gdb只会继续调试父进程而不会关心子进程的运行。如果需要在多个子进程和父进程间来回跳跃调试,则需要设置相关参数detach-on-fork。https://www.yuanmadesign.com/ymdesign/gdb-debug-fork

默认情况下,父进程fork一个子进程,gdb只会继续调试父进程而不会关心子进程的运行。如果需要在多个子进程和父进程间来回跳跃调试,则需要设置相关参数detach-on-fork。

跟踪子进程进行调试,可以使用set follow-fork-mode mode来设置fork跟随模式。
1.1 show follow-fork-mode
进入gdb以后,我们可以使用show follow-fork-mode来查看目前的跟踪模式。

1.2 set follow-fork-mode parent
gdb只跟踪父进程,不跟踪子进程,这是默认的模式。

1.3 set follow-fork-mode child
gdb在子进程产生以后只跟踪子进程,放弃对父进程的跟踪。

2. 想同时调试父进程和子进程,以上的方法就不能满足了。gdb提供了set detach-on-fork mode命令来同时调试多个进程
2.1 show detach-on-fork
show detach-on-fork显示了目前是的detach-on-fork模式

2.2 set detach-on-fork on
只调试父进程或子进程的其中一个(根据follow-fork-mode来决定),这是默认的模式。

2.3 set detach-on-fork off
父子进程都在gdb的控制之下,其中一个进程正常调试(根据follow-fork-mode来决定),另一个进程会被设置为暂停状态。

3. 如何在多进程间切换

使用gdb调试多进程时,如果想要在进程间进行切换,那么就需要在fork调用前设置: set detach-on-fork off ,
然后使用 info inferiors 来查看进程列表信息,得到的信息可以看到最前面有一个进程编号,使用inferior num 来进行进程切换。

> info inferiors

> inferiors <process number>

» 转载保留版权:猿码设计师 » 《Linux gdb子进程和多进程调试》

» 本文链接地址:Linux gdb子进程和多进程调试 - 猿码设计师 follow-fork-mode

» 如果喜欢可以:关注《猿码设计师》公众号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值