启动GBD调试程序
gbd ./test.cpp
如果想要带参数的话则使用
gdb –args test.cpp 1 2 3
运行调试程序
运行到第一个断点 run 或者 r
有参程序要提前设定参数 set args 1 2 3
显示传入的参数 show args
断点设置
break可以缩写为b
在函数入口处设置断点 break {function_name}
在指定行设置断点 break {filename:linenum} (在非多文件编译的情况下filename可以省去)
程序中各行代码都有对应的行号,可通过执行 l(小写的 L)命令看到
查看断点 info breakpoints
清除指定断点 clear {filename:linenum} (如果省去{filename:linenum} 则会清除所有断点)
条件断点 break test.cpp:20 if i == 5
观察操作
观察变量 watch x
显示变量值 print x
程序停止时显示x的值 display x
查看x的数据类型 whatis x
修改变量的值 set variable x = 5
执行操作
捕捉点 catch throw (用于发生特定事件比如抛出异常时停止程序)
单步进入 step 或者 s (用于查看函数内部发生的过程)
继续执行 continue 或者 c
单步执行 next 或者 n
跳转执行 jump {location}
执行完当前函数 finish
执行完当前函数并指定返回值 return (作用相当于直接在代码的当前位置插入一个return 还能指定返回值)
下一步 until (作用同next 但是在对循环体尾部使用时直接把整个循环体执行完,可以把意思理解为执行到下一行为止)
信号命令
我们可以通过signal {signal}来向程序发送信号
nostop : 程序不停止运行但告诉你收到这种信号
stop : 程序停止
print : 显示一条信息
noprint : 不显示收到信号的信息
pass、noignore : 交给调试程序处理
nopass、ignore : 不让调试程序处理信号
shell命令
输入shell进入shell命令行
退出shell返回到gdb : exit
在gdb的命令行中,可以使用!
前缀来执行shell命令。exp: !ls 查看当前目录下的文件