当前位置: 首页 > article >正文

1-8 gdb调试

文章目录

    • 1 准备
    • 2 启动和断点操作
    • 3 调试命令
      • 3.1 打印信息 print == p
      • 3.2 自动打印 display
      • 3.3 单步调试
      • 3.4 设置变量

1 准备

gcc a.c -g -wall -O0 -o app
	
  • -g 生成的可执行程序是可调试的,就是在可执行程序中加入了源代码的信息,比如第几个可执行程序中的机械指令对应源代码的第几行
  • -wall 生成所有警告信息
  • -O0 不优化代码

2 启动和断点操作

# 启动gdb
gdb app

# 设置args参数
set args 参数
# 查看命令行参数
show args
# 设置 显示行数
set listsize 行数 #或者set list 行号

# 运行程序两种方法
start 
	- 只运行到main函数中的第一行
	- c (continue)继续运行到下一个有效断点
	- n (next) 单步调试
run
	- 直接运行程序到断点或结束
# 退出gdb调试
quit 
	== q

# 查看代码
list 
	=l 默认显示十行代码,使用↩︎再显示十行(重复执行)
	- list 行号 显示行号的上下文,默认十行
	- list 函数 显示函数的上下文,默认十行
	- list 文件:行号  切换文件
	- list 文件:函数  切换文件并显示函数
	
# 断点操作
break
	=b
b 行号
b 函数 停在函数第一行
	- b 文件名:行号
	- b 文件名:函数 
b 行号 if 变量名==某个值

# 查看断点
info 
	=i
i b # 显示所有断点的信息 
# 编号Num 状态Enb 作用位置What
# 可以通过操作编号来删除断点
d # delete
d 1 # 删除标编号1的断点
d 1-3 # 删除编号1~3的断点

# 将断点设置不可用
# dis = disable
dis num [num...]
dis numx-numy

# enable = ena
ena num [,,,]
ena numx-numy

3 调试命令

3.1 打印信息 print == p

格式化字符说明
/x以十六进制形式打印整数(如 255 显示为 0xff
/d以有符号十进制形式打印整数(支持负数,如 -42
/u以无符号十进制形式打印整数(仅限非负值,如 4294967295 用于 32 位)
/o以八进制形式打印整数(如 64 显示为 0o100
/t以二进制形式打印整数(如 5 显示为 0b101
/f以浮点数形式打印值(自动识别单/双精度,如 3.141592
/c以 ASCII 字符形式打印值(如 65 显示为 'A'
# 打印变量值
p 变量名
# 格式化变量值
p/x i
# 打印变量类型
ptype i

3.2 自动打印 display

# 设置自动打印
display/fmt 变量名1 2 3

# 取消自动打印有三种方式
# 1.两种删除打印
undisplay num...
delete display num...
# 2.是变量跟踪失效
disable display num...
enable display num... # 恢复生效

3.3 单步调试

命令效果
step == s向下执行一行,遇到函数会进入函数体
finish跳出函数体(需要保证函数体内没有生效的断点)
next = n向下执行一行,但是不会进入函数体
until跳出循环体(需要满足两个条件:1、循环体内不能有有效断点 。 2、在循环体的开始或结束行执行, 比如for 这一行))

3.4 设置变量

这里设置的程序内的变量值,比如循环控制变量i

set var 变量名 =

http://www.kler.cn/a/565904.html

相关文章:

  • 齿轮制造的“精密心脏”:蜗杆状砂轮磨齿机探秘
  • 回溯算法中的for循环和递归使用
  • Linux基础33-C语言篇之字符串的基础操作【入门级】
  • StableDiffusion打包 项目迁移 项目分发 1
  • vue el-table-column 单元表格的 省略号 实现
  • P1706 全排列问题
  • 使用python做http代理请求
  • docker和containerd从TLS harbor拉取镜像
  • Linux的诞生:一场自由与协作的技术革命
  • CF 106B.Choosing Laptop(Java实现)
  • Kafka零拷贝
  • spark的一些指令
  • 嵌入式八股文,select、poll、epoll
  • python学习六
  • 处理DeepSeek返回的markdown文本
  • DeepSeek开源周第四弹!DeepSeek开源三剑客:训练效率的“时空魔术师”与“资源管家”全解析
  • LeetCode 热门100题-回文链表
  • DeepSeek开源周,第四弹再次来袭,优化并行策略
  • < 自用文儿 > Gobuster 暴力扫描工具与 SecLists 安全测试词表集合
  • 【AI深度学习基础】NumPy完全指南入门篇:核心功能与工程实践(含完整代码)