调试利器GDB(上)
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,调试利器GDB(上)1.1 GDB初识1.1.1什么是GDB?GDB是GNU项目中的调试器(gnu debuger),能够跟尊程序的执行,也能恢复程序崩溃前的状态1.1.2为什么需要GDB?软件产品的
千家信息网最后更新 2025年12月01日调试利器GDB(上)
调试利器GDB(上)
1.1 GDB初识
1.1.1什么是GDB?
GDB是GNU项目中的调试器(gnu debuger),能够跟尊程序的执行,也能恢复程序崩溃前的状态
1.1.2为什么需要GDB?
软件产品的研发过程必然伴随bug,调试时软件开发中不可或缺的技术(调试工具很重要)
1.1.3 DBG与binutils

1.2 GDB的常规使用
1.自定义程序得到启动方式(指定影响程序运行的参数)
2.设置条件断点(在满足条件时程序暂停执行)
3.回溯检查导致程序异常结束的原因(core dump)
4.动态改变程序的执行流(定位问题的辅助方式)
1.3 GDB的启动方式
直接启动:
gdbgdb test.outgdb test.out core动态链接gdb test.out pid
1.4 GDB的应用示例
示例1:
dbg //启动file test.out //载入目标程序set args arg1 arg2 //设置命令行参数run //执行目标程序注:gdb + file test.out == gdb test.out示例2:
gdb //启动attach pid //链接到目标进程,链接成功后目标程序将停止执行continue //恢复执行注:gdb + attach pid == gdb test.out pid1.5 断点调试
1.5.1断点类型
- 软件断点:由非法指令异常实现(软件实现),,通过中断来实现程序位于ram中
- 硬件断点:由硬件特性实现(数量有限)程序位于flash(只读)中
- 数据断点:由硬件特性实现(数量有限),监视内存,当内存被改写时触发
1.5.2软件断点相关操作
通过函数名设置断点:
break func_name [ if var = value]tbreak func_name [ if var = value]通过行号设置断点:
break file_name:line_num [ if var = value ]break file_name:line_num [ if var = value ]Tbreak设置的断点只生效一次。

1.5.3调试时相关操作
1.5.4硬件断点及其操作
当代码位于只读寄存器(flash)时,只能通过硬件断点调试
硬件断点需要硬件支持,数量有限
GDB通过hbreak命令支持硬件断点,与break使用方法完全一致
断点
程序
硬件
软件
目标
数量
数量有限
方式
有限
示例
链接
内存
动态
参数
命令
条件
特性
支持
利器
重要
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
中国姓氏名字数据库
数据库控制语句编程
数据库api集成平台
擎天软件提示数据库文件
数据库适用级别
软件开发过程及其规范试题
网络安全泡沫可以消灭吗
网络技术考计算机等级
美国互联网科技一代
延吉市网络安全
财务软件属于网络安全吗
威科先行数据库购买
平安互联网科技
手机软件开发 应用方向
重力感应无人售货柜软件开发
高新区网络技术服务怎么样
软件平台服务器配置
数据库恢复中安全策略
用青春谱写网络安全之歌
兰州佳桥通信网络技术有限公司
VB存取手机图片到数据库
苏州fil服务器加盟
软件开发工程师要什么文凭
浪潮服务器主板c1615闪红灯
论文数据库宣传方案
计算机网络技术以后干什么的
腾讯数据库包括哪些
网吧网络安全审核登记表
众测天下网络技术有限公
海口数据库工程师招聘