GDB是C/C++的非常便捷的命令行调试器,在Linux下搭配GCC可以完美调试C/C++程序。
GCC参数设置
为了对g++编译生成的可执行程序使用GDB,在编译时应该使用-g
参数,例如我的编译指令为alias cpl='g++ -std=c++11 -g -o $@ $@'
常用命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
l(list) [line_num, func_name] --> 显示指定行数或函数附近的源码
r(run) --> 起始运行程序,直到程序结束或者遇到断点停下
b(break) [line_num, func_name] --> 设置断点,使用line_num可在对应行数设置断点,使用func_name则可对于某个函数设置断点
cl(clear) [line_num, func_name] --> 取消断点
c(continue) --> 在程序中断后继续执行程序,直到程序结束或者遇到断点停下
n(next) --> 执行下一条语句,如果有函数调用,不进入函数内部
s(step) --> 执行下一条语句,如果有函数调用,进入函数内部
u(until) [line_num, func_name] --> 执行到制定行数或者函数开头
p(print) [val, expr] --> 显示变量或者表达式的值
disp(display) expr --> 把一个表达式设置为display,每当程序停下时都会显示其值
i(info) --> 显示多种信息。i b显示所有断点,i disp显示display,i local显示所有局部变量
bt(backtrace) --> 显示程序栈调用
|
更多高级命令可以参考 《GDB QUICK REFERENCE》 以及 《Debugging with GDB》