gdb之前
gdb是gcc的调试工具,主要用于c/c++这两种语言的编程的调试。功能强大,主要体现在以下几点:
- 可以按照用户自定义的要求随心所欲的运行程序
- 可以设置断点,让程序在断点处停住
- 当程序停住时,可以检查此时程序中运行状态
要调试程序,首先在编译的时候,必须把调试信息加到可执行文件中,使用gcc/g++ 的-g参数可以做到,如下:
1 | gcc -g -o hello hello.cpp |
启动gdb的方法:
1 | gdb hello |
hello是你的执行文件,一般在当前目录下
一个例子
接下来看一个例子1
2
3
4
5
6
7
8
9
10
int main()
{
int a = 1;
a = a + 6;
char p[] = "you are amazing";
std::cout<<p<<std::endl;
std::cout<<"hello world\n";
return 0;
}
使用1
gcc -g -o hello hello.cpp
编译之后,输入gdb hello,启动gdb。
结果如图1
图1 启动
输入l,表示list,从第一行开始列出源码,如图2,再按下enter键,表示重复上一次命令
图2 列出源码
执行’b 6‘表示设置再源码6行处设置断点,执行‘b main’表示再main函数处设置断点,执行‘info break’表示查看断点信息,图3
图3 断点
执行r命令,表示运行程序图4
图4 运行
输入n表示单条语句执行,输入p a,p p表示分别打印a的值和p数组的值,打印ascii码值,输入x/s p,输入bt查看函数堆栈,图5
图5 显示
输入finish推出函数,输入q结束调试。
总结
上面的例子一个使用了以下命令:l,b,r,n,p,bt,x/s,finish,q,调试一些简单的程序已经够用了,但是想要更加深入了解gdb,可以参考链接