ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

gdb调试多进程

2022-04-18 11:35:17  阅读:182  来源: 互联网

标签:fork gdb 进程 follow detach 调试


1. set follow-fork-mode [parent|child]

gdb 默认设置是 parent,可用使用show follow-fork-mode 来查询当前fork模式。

如果想要调试子进程,进入gdb后设置

set follow-fork-mode child

然后再设置子进程里的断点,就可以调试停到子进程。

使用follow-fork-mode,只能调试一个进程,不能同时调试父子进程

2. set detach-on-fork [on|off]

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

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

如果设置了set detach-on-fork offfollow-fork-mode为parent,fork后子进程并不运行,而是处于暂停状态。

follow-fork-mod 意义:代表当前gdb跟随着哪个进程在调试

注意:follow-fork-mod默认情况下跟随着主进程调试(parent)

查看当前gdb跟随着哪个进程在调试: show follow-fork-mode

设置gdb跟随哪个进程调试

set follow-fork-mode parent //设置gdb跟随主进程调试(默认)

set follow-fork-mode child //设置gdb跟随着子进程调试

detach-on-fork 意义:当前gdb调试多进程的规则查看gdb调试多进程时的规则: 如果结果显示on:代表调试一个进程,其他进程自动运行如果结果显示off:代表调试一个进程,其他进程阻塞(处于等待状态) show detach-on-fork 设置detach-on-fork: set detach-on-fork off

set detach-on-fork on //默认的

follow-fork-mod与detach-on-fork的组合 只调试主进程,子进程自动运行 set follow-fork-mod parent set detach-on-fork on 只调试子线程,主线程自动运行 set follow-fork-mod child set detach-on-fork on 同时调试两个进程,gdb跟随着父进程,子进程处于等待状态,在fork处 set follow-fork-mod parent set detach-on-fork off 同时调试两个进程,gdb跟随着子进程,父进程处于等待状态,在fork处 set follow-fork-mod child set detach-on-fork off

gdb调试口诀技巧 如果只想要调试父进程:在就父进程的代码处打上断点,然后follow-fork-mode 设为parent如果只想要调试子进程:在就子进程的代码处打上断点,然后follow-fork-mode 设为childdetach-on-fork根据自己的需求而定

其他命令 查看当前程序中正在调试的进程: GDB会为这些进程分配inferiorID号,但是这个ID号不是进程的PID显示的信息中,每一个进程占用一行,如果有个ID前面带有“*”号,代表这个进程是gdb正在调试的进程 info inferiors 切换gdb调试的进程: ID号不是IPD,而是gdb内的info inferiors显示的ID inferior 进程ID号 彻底删除一个进程: 如果该进程正在运行,不能删除。可以使用kill或者detach删除这个进程 remove-inferiors 进程inferiorID 让该进程detach掉,但是该进程还存在,还可以使用r来执行它: kill inferiors 进程inferiorID 下面的命令同上: detach inferiors 进程inferiorID

attach与detach的使用 当我们进入gdb对一个进程调试的时候: 如果想要挂接别的进程来调试,就:attach PID如果想要取消这个挂接的进程,就:detach PID未进入gdb:如果想要对一个程序指定的进程调试,直接输入:gdb attach PID

标签:fork,gdb,进程,follow,detach,调试
来源: https://www.cnblogs.com/liuhanxu/p/16158842.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有