GDB调试:gdb调试的是可执行文件,在编译时加入-g
,告诉编译器在编译时加入调试信息,这样gdb才能调试这个被编译的文件,同时使用-Wall
显示所有的警告信息。 g++ -g test.cpp -o test.out -Wall
GDB命令格式:
命令 | 功能 | 实例 |
---|---|---|
gdb | 启动调试 | gdb test.out |
quit/q | 退出gdb,结束调试 | quit/q |
set/show args | 设置/获取程序参数 | set args 100 show args |
set/show listsize | 设置/获取list显示的行数 | set listsize 100 show listsize |
list/l | 查看程序源代码 | l 5,10 :显示5到10行的代码l test.cpp:5, 10 : 显示源文件5到10行的代码,在调试多个文件时使用l get_sum : 显示get_sum函数周围的代码l test.cpp get_sum : 显示源文件get_sum函数周围的代码,在调试多个文件时使用 |
help | 查看帮助信息 | help list/all |
break/b | 设置断点 | b 7//在第七行设置断点 b get_sum//以函数名设置断点 b 行号或者函数名 if 条件以条件表达式设置断点 |
info/i break/b | 查看断点信息 | i b |
start/run | 运行GDB程序 | start//程序停在第一行 run//遇到断点则停止 |
continue/c | 继续运行,下个断点停 | – |
next/n | 继续执行下一条语句 ,会把函数当作一条语句执行,即不会进入函数体 | – |
step/s | 继续执行下一条语句,会跟踪进入函数,一次一条的执行函数内的代码 | – |
finish | 跳出循环体 | – |
print/p | 打印变量值 | p 变量名 |
ptype | 打印变量类型 | ptype 变量名 |