gdb代码调试

gdb代码调试
chenlei@TOC
1. 软件发布形式
一般的软件发布有两种:
debug:可以被调试,形成的可执行程序会添加调试信息—>用户不需要+体积大
release:形成的可执行程序会去掉调试信息(面向用户)
调试时使用的是debug模式
- gcc/g++编译时动态链接,默认release发布
gcc -o $@ $^ -g-g以debug方式发布
可执行呈现的格式->ELF
redelf
2. 安装gdb
yum install -y gdb:安装gdb调试软件
3. 调试命令
l 行号/函数名/文件名 显示代码内容(记录最近一次操作,下方向键)
r 重新运行
c (continual)运行到下一个断点b (Break point)打断点——进行范围定位排除b 行号/内容打断点b 文件名:行号info b用来查看断点d 断点编号删除断点disable 断点编号 禁用断点enable 断点编号 使能(禁用/开启)断点
n (next)逐过程s(step)逐语句
逐语句(
;为分隔符):进入一个函数(对应VS中的F11)
逐过程:每一行看作一个整体,把一行看作一个整体,包括函数。
p +变量/&地址 显示变量的地址和内容,相当于监视;display 变量名/取地址:常显示变量的地址和内容;undisplay +编号 取消常显示变量的地址和内容;
- 范围查找(从上至下依次扩大范围)
c(continual)运行到下一个断点fin(finish):将一个函数运行结束就停下来until 行号:在一个范围内,直接运行到指定行bt:查看调用堆栈
set var name=value:修改一个变量的内容,不用改代码就像多分支测试;
4. 调试本质:
- 找到问题(二分思想范围查找,局部逐行查找),以上所有指令都是为了找到问题;
- 解决问题(上下文代码)
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果










