首先写个gdbtest1.c,
#include <stdio.h>
void main(){
int age=get_age();
printf("age is %d \n",age);
printf("hello world\n");
}
int get_age(){
printf("come to get_age funtion \n");
return 24;
}
然后对其进行编译,注意添加-g,不然不能生产符号表,就不能查看源码了
gcc gdbtest1.c -g -o gdbtest1
然后执行gdb gdbtest1,就可以调试这个程序了,这是程序并没有跑起来
由上图提示Reading symbols from /work/gdbtest/gdbtest1...done. 表明符号表已经加载完成了
我们可以通过list指令查看源码
可以点击enter键不断地向下查看源码。
在程序跑起来之前,我们当然要先打断点啦,我们可以用下面两种方法打断点
1. b 5 (表示在程序第五行打上断点)
2 .b get_age (表示给get_age函数打上断点)
上图中的0x400559就是该行程序的地址啦
接下来,就是运行程序
执行 r 就是可以了。
上图可以看到程序停在了断点处了
想单步调试的话执行 s
如果想查看变量可以用info local ,例如我想看上面程序的age值,只需要 info local age