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

调试技术和技巧

Day 15: 调试技术

本章介绍使用GDB和其他工具调试汇编程序的技术和技巧。


1. GDB基础

1.1 启动和基本命令

# 编译(保留调试信息)gcc -g program.c -o program nasm -f elf64 -g program.asm -o program.o# 启动GDBgdb ./program gdb -q ./program# 安静模式

1.2 常用命令

# 断点 break main # 在main设置断点 break *0x401000 # 在地址设置断点 break func if x > 10 # 条件断点 delete 1 # 删除断点1 info breakpoints # 查看断点 # 运行 run # 开始运行 run arg1 arg2 # 带参数运行 continue # 继续执行 next # 下一行(不进入函数) step # 下一行(进入函数) stepi # 下一条指令 nexti # 下一条指令(不进入) finish # 执行到函数返回 # 查看 info registers # 查看所有寄存器 info registers eax # 查看特定寄存器 print $eax # 打印寄存器值 print/x $eax # 十六进制显示 print variable # 打印变量 # 内存 x/10xw $esp # 查看栈(10个word,十六进制) x/s 0x401000 # 查看字符串 x/i $eip # 查看指令 x/20i $eip # 查看20条指令 # 反汇编 disassemble # 当前函数 disassemble main # 指定函数 disassemble /r # 显示机器码 # 修改 set $eax = 100 # 修改寄存器 set {int}0x401000 = 5 # 修改内存

2. 分析栈帧

# 查看调用栈 backtrace # 或 bt bt full # 包含局部变量 # 切换栈帧 frame 0 # 切换到帧0 up # 上一帧 down # 下一帧 # 查看栈内容 info frame # 当前帧信息 x/20xw $esp # 查看栈内存

3. GDB脚本

# 命令序列 define hook-stop x/5i $eip info registers eax ebx ecx edx end # 保存到.gdbinit set disassembly-flavor intel

4. 调试技巧

1. 从入口点开始 break _start 2. 关键位置设断点 - 函数入口/出口 - 循环 - 条件分支 3. 观察寄存器变化 display/x $eax 4. 检查栈完整性 验证返回地址

5. 小结

[GDB基础] 1. break设置断点 2. run/continue运行 3. step/next单步 [查看信息] 4. info registers 5. x/查看内存 6. disassemble反汇编 [栈分析] 7. backtrace调用栈 8. frame切换帧 [高级] 9. 条件断点 10. GDB脚本

下一篇预告:Day 16 - 逆向工程入门


http://www.jsqmd.com/news/377669/

相关文章:

  • 浮点数运算
  • 【python毕设源码分享】基于Python的协同过滤算法的天气穿搭推荐系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 赶deadline必备! 10个AI论文网站深度测评,继续教育毕业论文写作全攻略
  • YOLOv8眼睛状态检测:基于AFPNet-P345的睡意监测系统_1
  • 【python毕设源码分享】基于Flask和Vue的电商管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 打家劫舍问题的动态规划解法与性能优化笔记
  • 基于SpringBoot+协同过滤推荐算法+智能AI问答的水果线上交易平台开题报告
  • go mapstructure使用例子
  • 硬币找零问题的动态规划解法与实现思考笔记
  • TPJ系列机械式螺旋圆弹簧疲劳试验机
  • 2026年市场评价好的包装袋定制厂家选哪家,四边封包装袋/自立袋/聚酯尼龙袋/三边封拉链袋,包装袋制造厂家推荐排行 - 品牌推荐师
  • 【Python毕设全套源码+文档】基于python的媒体资源管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 『NAS』设置内网固定 IP
  • 教你如何识别台式电脑电源的好坏
  • 【Python毕设全套源码+文档】基于python的采用人脸识别技术的课堂考勤管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 面试必看:打家劫舍
  • 2026年工业研学公司综合评测:聚焦科创实践与产教融合的新趋势​ - 品牌2025
  • 【Python毕设全套源码+文档】基于python的租房管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 56周作业
  • 2026年工业焊接协作机器人知名品牌商选择指南,推荐上海广为 - 品牌2025
  • comsol多孔介质流燃烧器模型,集层流流动模块,流体传热模块,浓物质传递模块和化学反应模块于...
  • 50.k8s管理-1和 k8s核心概述-2 - 实践
  • 【Python毕设全套源码+文档】基于python的个人身心健康管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 2026年全国防爆墙厂家哪家靠谱?靠谱优质实力强劲 适配多场景防护需求 覆盖全国多区域需求 - 深度智识库
  • 车桥耦合Matlab程序:Newmark法数值积分实现动力学求解
  • AT_agc013_d [AGC013D] Piling Up
  • 2026年汽车应急启动电源十大品牌推荐深度解析 - 品牌2025
  • 那些年我们create generate clock遇到的坑
  • 武商一卡通使用与回收:超实用指南让你轻松搞定 - 团团收购物卡回收
  • 2026年优选五大汽车电瓶设备公司选择指南 - 品牌2025