参考书上例子+自己实际操作 记录笔记
目录
1.gcc 的使用
Usage: gcc [options] file...
常用参数:Linux 输入 gcc --help 可查看


2.gdb功能分类
- 多种方式加载调试程序
- 设置断点
- 检查程序运行中各种状态和信号的变化
- 动态改变程序执行环境
3.gdb命令行格式
gdb [options] [executable-file] [core-file]
常用参数:

启动gdb方式:

常用gdb命令:

4.基本调试技术
包括 断点管理 执行程序 显示程序变量 信号管理
4.1 例子程序

编译test.c
gcc -g -o test test.c -g 生成调试信息
4.2 列出源码
gdb test
显示如下界面:

输入 list 默认显示前10行 试试 list 1 list 8,10

4.3断点管理
输入break 8 或者b 8 或者break 函数名
查看断点 info breakpoints

enable 1 diasble 1 是对断点的打开和关闭 delete 是删除断点
4.4 执行程序
输入r或者run 运行或者在断点处停下 ,我刚刚设置第八行有断点

输入next 或者 n 步进

4.5显示程序变量
输入print i 或者display i 查看变量值

4.6信号管理
gdb可以模拟操作系统给被调试的应用程序发送信号
格式 signal <信号名称>

此例是书上例子

首先在第40行设置断点,此时输入 signal SIGINT ,程序收到信号会调用第 38 行的响应函数
5.多进程调试
例子test1.c代码

输入 gcc -g -o test1 test1.c 加入调试信息
输入./test1 ,另开一个终端输入 ps -e | grep test1


切换到root用户
设置连接到3265进程后,gdb会自动查找test1文件并且加载
6.调试意外终止程序
书上的例子,编译程序运行后,出错


提示段错误,程序无法继续运行,会异常终止,核心已转储的意思是程序出错时环境已被转存



ulimit -c 1024 作用时修改core 文件缓冲区

重新运行程序,再查看core文件
输入 gdb HttpDemo core 此例会显示这个


7.内核调试技术
7.1.ptintk打印调试信息
7.2 使用/proc虚拟文件
这里之后再补充
本文详细介绍了GCC的使用方法和GDB调试工具的功能,包括如何设置参数、启动方式以及常用命令。内容涵盖从列出源码、管理断点、执行程序、显示变量到处理信号的基本调试技术,并探讨了多进程调试、调试意外终止程序以及内核调试的基础知识。通过实例演示了如何利用GDB进行程序调试,帮助读者掌握有效的调试技巧。
2208

被折叠的 条评论
为什么被折叠?



