因为下面内容都是以~/练习/include/目录下的example.c文件来示例的,故附上example.c文件内容:
#include <stdio.h> int main(int argc,const char* args[]) { int a = 100; float b = 200.0; printf("HelloWorld\n"); printf("%f\n",a + b); int c = argc; const char* str1 = args[1]; const char* str2 = args[2]; printf("%d%s%s\n",c,str1,str2); printf("%s\n",args[0]); return 0; }
1.-g: 在编译成目标可执行程序时加上-g选项,就会在生成目标可执行程序文件中加入调试信息。
gcc -o result.exe -g example.c
2.启动GDB: gdb 可执行程序名
gdb result.exe
1.在gdb调试程序里运行可执行程序: 输入run或者r即可,即r[un]
(gdb) run ##或者 (gdb) r
2.start:开启分步调试,停留在main函数
(gdb) start Temporary breakpoint 1 at 0x40056c: file example.c, line 5. Starting program: /home/xiaocer/练习/include/result.exe Temporary breakpoint 1, main (argc=1, args=0x7fffffffe4f8) at example.c:5
3.n[xet]: 执行下一步指令
4.s[tep]: 执行下一条指令,可以进入函数内部,但是库函数不能进入。
5.设置主函数启动的参数: set args xxx1 xxx2,当然了这个等同于run xxx1 xxx2。run xxx1 xxx2也可以设置程序启动的参数。也等同于set args[1] = "xxx1" set args[2] = "xxx2";args[0]的值默认是可执行程序名。
6.显示源文件代码
7.设置断点调试:
8.查看已经设置好的断点信息: i[nfo] b[reak],这样得到number
9.删除断点: d[el] number
10.跳到下一断点: c[ontinue]
11.p[rint] 变量名: 打印变量的值
12.ptype 变量名: 打印变量的类型
13.跟踪某个变量的值: display 变量名.
14.取消跟踪某个变量: undisplay
number,查看number info display。
1.q[uit]: 退出gdb调试程序
ulimit -c 0
##设置core文件大小1024 ulimit -c 1024 ##设置core文件大小无限制 ulimit -c unlimited