🌟hello,各位读者大大们你们好呀🌟
🍭🍭系列专栏:【Linux初阶】
✒️✒️本篇内容:gdb使用相关背景知识,gdb的使用(打断点、查断点、消断点、调试运行、查看对应变量)
🚢🚢作者简介:计算机海洋的新进船长一枚,请多多指教( •̀֊•́ ) ̖́-
📡📡同期Linux工具文章:Linux环境下的 git 使用
目录
一、背景知识
二、gdb的使用
1. gdb安装
2. l - debug模式下查看代码
3. b、info、d - debug模式下打断点、查断点、去断电
4. r、n、s - 调试运行(逐过程、逐语句)
5. bt、finish - 查看调用堆栈、跑完对应函数
6. p - 查看对应变量和对应变量的地址
7. (un)display - 对特定变量进行常显示
8. 修改变量值、禁用/启用断点、退出 (q)
一、背景知识
程序的发布方式有两种,debug模式和release模式(debug用于程序员调试,release对代码进行了优化,多给予用户使用)
Linux gcc/g++出来的二进制程序,默认是release模式
要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项,以debug方式发布
Linux环境下,调试默认为release模式,不能直接调试
在makefile的gcc生成指令中加上 -g,使程序以debug方式发布
- 这里是在源文件 mycode.c 和 main.c 后面加 -g ,(-DN=1可忽略)
二、gdb的使用
1.gdb安装
sudo yum install gdb #普通用户
yum install gdb #root用户
2.l - debug模式下查看代码
l | 显式可执行程序代码 |
l 0 | 显式可执行程序第一行代码 - [小写英文L,数字0] |
回车 | 默认运行上一次的指令(第二次输入l,代码下翻) |
3.b、info、d - debug模式下打断点、查断点、去断电
对应指令如下
- break(b) 行号:在某一行设置断点
- info(或i) breakpoints:参看当前设置了哪些断点
- delete breakpoints n:删除序号为n的断点
- delete breakpoints:删除所有断点
对应示例如下
4.r、n、s - 调试运行(逐过程、逐语句)
对应指令如下
- r或run:运行程序
- n 或 next:单条执行(逐过程)
- s或step:进入函数调用(逐语句)
5.bt、finish - 查看调用堆栈、跑完对应函数
对应指令如下
对应示例如下
- 进入到 ProncessOn () 函数中的堆栈调用情况
- 运行完对应函数(进度条小程序),再查看对应的堆栈
6.p - 查看对应变量和对应变量的地址
对应指令如下
- p + 对应变量名 —— 查看对应变量
- p + &对应变量名 —— 对应变量的地址
对应示例如下 (在循环中查看变量sum、i 及其地址)
7.(un)display - 对特定变量进行常显示
对应指令如下
- display 变量名:跟踪查看一个变量,每次停下来都显示它的值
- undisplay 变量名:取消对先前设置的特定变量的跟踪
8.修改变量值、禁用/启用断点、退出 (q)
对应指令如下
- set var:修改变量的值
- disable breakpoints:禁用断点
- enable breakpoints:启用断点
- quit:退出gdb
🌹🌹Linux调试器-gdb的使用大概就讲到这里啦,博主后续会继续更新更多Linux操作系统的相关知识,干货满满,如果觉得博主写的还不错的话,希望各位小伙伴不要吝啬手中的三连哦!你们的支持是博主坚持创作的动力!💪💪