主机论坛_虚拟主机_美国主机_美国虚拟主机_云主机技术_全球主机交流聚集地—Web Hosting Talk 中文站

找回密码
立即注册
发新帖

0

收听

4

听众

547

主题
发表于 2022-2-17 14:11:31 | 查看: 104| 回复: 0

调试利器GDB(上)1.1 GDB初识1.1.1什么是GDB?GDBGNU项目中的调试器(gnu debuger),能够跟尊程序的执行,也能恢复程序崩溃前的状态
1.1.2为什么需要GDB?软件产品的研发过程必然伴随bug,调试时软件开发中不可或缺的技术(调试工具很重要)
1.1.3 DBGbinutils
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使用方法完全一致


企业专线-MPLS VPN-SDWAN组网-云专线http://www.elinkcloud.cn/

收藏回复 显示全部楼层 道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|小黑屋|WebHostingTalk中文站

GMT+8, 2024-5-3 22:40 , Processed in 0.087921 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表