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

本文详细介绍了如何使用GDB进行多进程和多线程调试,包括follow-fork-mode的使用,attach命令调试子进程,以及GDB在多线程调试中的基本命令,如info threads、thread应用等,还提到了detach-on-fork参数的设置和跟踪子进程的方法。
摘要由CSDN通过智能技术生成

一 调试多进程

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值