1 前提条件
使用g++编译代码时,增加参数-g,生成调试信息。只有如此,才能对代码进行调试。
2 查看代码
1) 跳到指定行
使用list + 行号,查看指定行号附近的代码
list + 文件名:行号, 查看指定文件指定行附近的代码
2) 查看指定函数
3) 查看函数定义信息
2 打断点
1) 普通断点
b + linenum,在指定行处打断点;
2) 条件断点
使用break if命令,如下所示:
(gdb) break line-or-function if expr
例如:break 46 if testsize==100
3) 取消断点
使用clear命令可以删除指定行处的断点。比如: clear 10,表示删除当前代码文件第10行处的代码。
3 开始调试
使用start命令开始调试,如果
4 单步调试
使用命令n (next),逐行调试代码。
5 跳入函数内
使用命令step,一次执行一行,遇到函数会进入
6 运行到下一个断点
使用cont命令,即continue的缩写
7 运行代码
使用命令r,直接执行代码不调试
8 退出gdb调试状态
使用命令quit,退出调试状态
——————————————————
9 附加到进程调试
gdb <program> <PID> 。如果你的程序是一个服务程序,那么你可以指定这个服务程序运行时的进程ID。gd
b会自动attach上去,并调试他。program应该在 PATH环境变量中搜索得到。
10 附加命令行参数的调试
执行gdb <program>后,调用set args命令,可以输入命令行参数。比如,
gdb ./gdbTest
set args 1000
start;
则1000作为命令行参数,被传递给了应用程序gdbTest,作为调试时的输入参数
11 查看调用堆栈
使用命令backtrace,查看调用堆栈