本篇文章进行调试器gdb的学习!!!
debug会生成需要调试的信息,release不会生成
程序的发布方式有两种,分别是:debug模式和release模式
Linux中gcc/g++编译出来的二进制程序,默认是release模式
使用gdb进行调试,需要编译出来的二进制程序是debug模式的,需要加-g选项
debug模式下的二进制程序是比release大的,多了调试的符号
格式:gdb binFile(debug模式下的二进制可执行文件)
调试命令:
quit 或 ctrl + d:退出gdb调试
r 或 run:运行程序,遇到断点会停下来
list 或 l [行号]:显示binFile源代码,连续按回车,会接着上次显示的代码继续显示,每次十行
list 或 l [函数名]:列出某个函数的源代码
n 或 next:逐过程,跳过函数执行
s 或 step:逐语句,会进入函数调用
b 或 break [行号]:在某一行设置断点
b 或 break [函数名]:在某个函数开头设置断点
info b 或 break:查看已经打的断点的信息
p 变量:打印变量的值
set var:修改变量的值
display [变量名]:跟踪查看一个变量,每次停下来都显示它的值 (监视器)
undisplay [编号]:取消对先前设置的那些变量的跟踪
finish:执行当前函数返回,然后停下来等待信息
until X行号:跳至X行
continue 或 c:从当前位置开始连续而非单步执行程序(跳到下一个断点处)
breaktrace(或bt):查看各级函数调用及参数
delete breakpoints:删除所有断点
delete breakpoints [n]:删除序号为n的断点
disable breakpoints:禁用断点
enable breakpoints:启用断点
info 或 i [locals]:查看当前栈帧局部变量的值
如何理解:和windows IDE(vs2019Debug对应)
部分指令思维导图: