C++ GDB多进程调试

网友投稿 1801 2022-11-14

C++ GDB多进程调试

C++ GDB多进程调试

GDB 主要帮助你完成下面四个方面的功能:

启动程序,可以按照自定义的要求随心所欲的运行程序可让被调试的程序在所指定的调置的断点处停住(断点可以是条件表达式)当程序被停住时,可以检查此时程序中所发生的事可以改变程序,将一个 BUG 产生的影响修正从而测试其他 BUG

调试流程

生成可执行、调试的文件

-g 选项的作用是在可执行文件中加入源代码的信息,比如可执行文件中第几条机 器指令对应源代码的第几行,但并不是把整个源文件嵌入到可执行文件中,所以在调 试时必须保证 gdb 能找到源文件。

g++ -g main.cpp -o main

常用命令

启动和退出

gdb mainquit #也可简写为 q

给程序设置参数/获取设置参数

set args 10 20

帮助

help

查看当前文件代码

list (从默认位置开始,可简写为 l)

查看其他文件代码

list 文件名:行号list 文件名:函数名

设置显示的行数

set

设置断点

break/b 行号break/b 函数名break/b 文件名:行号break/b 文件名:函数名

查看断点

info break

删除断点

delete 断点编号

设置断点无效

disable 断点编号

设置断点生效

enable

设置条件断点

break/b 10 if i==5

运行GDB程序

start (程序运行在第一行)run (程序遇到断点才停下)

继续运行,到下一个断点停

continue/c

向下执行一行代码(不会进入函数体)

next/n

变量操作

print 变量名ptype 变量名(打印类型)

向下单步调试(遇到函数进入函数体)

step/s finish (跳出函数体)

自动变量操作

display 变量名 (自动打印指定变量的值)info/i displayundisplay 编号

其它操作

set var 变量名=变量值until (跳出循环)

多进程

使用 GDB 调试的时候,GDB 默认只能跟踪一个进程,可以在 fork 函数调用之前,通过指令设置 GDB 调试工具跟踪父进程或者是跟踪子进程,默认跟踪父进程。

set follow-fork-mode [parent(默认)| child] #设置调试父进程或者子进程set detach-on-fork [on | off] # 设置调试模式:默认为 on,表示调试当前进程的时候#,其它的进程继续运行,如果为 off,调试当前进程的时候,其它进程被 GDB 挂起。info inferiors #查看调试的进程inferior id #切换当前调试的进程detach inferiors id #使进程脱离 GDB 调试

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SQLAlchemy学习-7.Column 设置日期时间类型
下一篇:第七章 使用嵌入式 Python (四)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~