首页 > 代码库 > Linux下gdb调试

Linux下gdb调试

关于gdb的其他客套话不多说,直接进入正题。


一、gdb基本命令列表

命令解释简写
file装入想要调试的可执行文件
list列出产生执行文件源代码的一部分l
next执行一行源代码但不进入函数内部n
step执行一行源代码而且进入函数内部s
run执行当前被调试的程序r
continue继续执行程序c
quit终止gdbq
print输出当前指定变量的值p
break在代码里设置断点b
info break查看设置断点的信息ib
delete删除设置的断点d
watch监视一个变量的值,一旦值有变化程序停住wa
helpgdb中的帮助命令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





结束!