调试利器GDB(上)
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,调试利器GDB(上)1.1 GDB初识1.1.1什么是GDB?GDB是GNU项目中的调试器(gnu debuger),能够跟尊程序的执行,也能恢复程序崩溃前的状态1.1.2为什么需要GDB?软件产品的
千家信息网最后更新 2025年01月23日调试利器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 pid
1.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安全错误
数据库的锁怎样保障安全
intel服务器平台
高速车都堵在服务器
c 怎么循环取数据库数据库
作业会不会影响数据库
数据库查询怎么爬虫展示数据
南工院计算机网络技术就业
宁波公司管理系统软件开发
大渡口区网络软件开发流程特点
新浪分期网络安全保护
在报表中将大量数据库
2012年软件开发行业
北京山海盟网络技术
北京微梦创新网络技术
青少年网络安全 主题班会
intelvt-d浪潮服务器
材料性能类数据库
泰坦陨落2一直显示连接服务器
感觉做软件开发好累
网络安全产品采购要求
软件开发测试前景
幼儿园班级网络安全课活动记录
异业联盟会员软件开发定制
服务器运行时间长
2021网络安全宣传周手势舞
腾讯 网络安全法
网络安全升级改造方案
肇庆考试软件开发咨询
海淀区正规网络技术排名靠前
找出是否重复数据库
计算机式网络技术