参考书上例子+自己实际操作 记录笔记
目录
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虚拟文件
这里之后再补充