基础
GDB是Linux下的调试工具,全称是GNU Debugger:
简单使用
下面先写一个简单的程序:
int main(void)
{
int a = 1;
int b = 2;
return 0;
}
然后使用gcc进行编译,注意需要加上参数-b
gcc -g main.c
这样会生成一个a.out文件:
gdb就需要使用这个文件来调试:
这样就进入了gdb程序中。
下面先介绍几个简单的命令:
l:表示list,会列出代码:
b:表示break,用于打断点:
这里的3就是前一个命令中看到的行号。当然实际上不只可以在行号上打断点,后续会介绍更多。
r:表示run,会运行到断点处:
disassemble / disas:用来反汇编当前的代码:
bt:断点之后查看堆栈:
这里因为没有函数的调用,所以只有一个main函数。
info / i:显示各类信息,以下是info之后可以接的参数(未显示全部):
下面是一个例子:
注意这里的变量a和b的值还都是0,因为断点是打在第3行上的,赋值还没有开始。
n:单步执行:
上面执行了两条指令,然后再看变量,就会发现它们已经被赋值了。
c:程序执行到结束:
s:单步进入函数。因为这个例子中没有其它函数,所以这里不再举例。
quit / q:退出GDB程序。