GDB调试
2022/8/24 23:23:29
本文主要是介绍GDB调试,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
GDB调试
因为下面内容都是以~/练习/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.启动gdb这个调试程序前需要做的事情
1.-g: 在编译成目标可执行程序时加上-g选项,就会在生成目标可执行程序文件中加入调试信息。
gcc -o result.exe -g example.c
2.启动GDB: gdb 可执行程序名
gdb result.exe
2.gdb调试程序的一些方法
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.显示源文件代码
- l[ist]:查看主函数的源码。默认只显示主函数所在文件的十行,需要显示更多的话敲回车。
- l[ist] xxx.c:行号:查看某个文件从指定的行号开始显示十行
7.设置断点调试:
- 指定行号加断点:b[reak] 行号,默认在主函数所在文件的行号
- 指定函数名加断点:b[reak] 函数名
- 指定文件对应的行:b[reak] xxx.c:行号
- 设置条件断点:b[reak] 行号 条件
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。
3.退出gdb这个调试程序
1.q[uit]: 退出gdb调试程序
4.gdb跟踪core文件
- 查看core文件的大小:
ulimit -c 0
- 设置生成core的大小
##设置core文件大小1024 ulimit -c 1024 ##设置core文件大小无限制 ulimit -c unlimited
- 设置core文件的格式
- 查看core文件:gdb 可执行文件名 core
这篇关于GDB调试的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南