Linux下gdb调试
关于gdb的其他客套话不多说,直接进入正题。
一、gdb基本命令列表:
命令 | 解释 | 简写 |
file | 装入想要调试的可执行文件 | 无 |
list | 列出产生执行文件源代码的一部分 | l |
next | 执行一行源代码但不进入函数内部 | n |
step | 执行一行源代码而且进入函数内部 | s |
run | 执行当前被调试的程序 | r |
continue | 继续执行程序 | c |
quit | 终止gdb | q |
输出当前指定变量的值 | p | |
break | 在代码里设置断点 | b |
info break | 查看设置断点的信息 | ib |
delete | 删除设置的断点 | d |
watch | 监视一个变量的值,一旦值有变化程序停住 | wa |
help | gdb中的帮助命令 | h |
二、gdb命令运用举例:
1.新建一个源文件vi yrp.cc,源代码如下:
#include<iostream>
using namespace std;
void swap(int &a,int &b)
{
int tmp;
tmp=a;
a=b;
b=tmp;
}
int main()
{
int i,j;
cout<<endl<<"Input two int number:"<<endl;
cin>>i>>j;
cout<<"Before swap(),i="<<i<<" j="<<j<<endl;
swap(i,j);
cout<<"After swap(),i="<<i<<" j="<<j<<endl<<endl;
return 0;
}
2.生成可执行文件 g++ -g -o yrp yrp.cc 注意必须使用-g参数,编译会加入调试信息,否则无法调试执行文件.
3.启动调试 gdb yrp
4.查看源文件 list 1,(由第一行开始)回车重复上一次指令
5.设置调试断点 break 16,在第16行设置断点, info break查看断点信息(简写ib)
6.调试运行输入 run
7.单步调试 step,进入函数内部
8.查看变量 print 举例print b
9.查看函数堆栈 bt,退出函数 finish
10.继续运行直到下一个断点或主函数结束 continue
11.退出调试 quit
结束!