调试工具gdb
gdb简介
- 监视变量值得变化
- 设置断点,在指定代码行上暂停执行
- 单步执行代码
-
分析崩溃程序产生core文件
命令行形式:
gdb filename
调试步骤
调用gdb
- 调用gdb,装载子程序
$gdb test
- (gdb)提示符是gdb的主要接口,可以向gdb输出命令
设置断点并调试
(gdb)break main
注意:break main是在main函数内第一个非简单赋值语句出
(gdb)break 所在行数设置断点
- 开始执行程序
(gdb)run
- 可以使用单步跟踪命令跟踪代码程序
(gdb)step
- print命令: n 表 示 第 n 个 p r i n t 命 令 , n表示第n个print命令, n表示第n个print命令,$n表示倒数第n+1个print命令
(gdb)print 表达式
- display命令:显示一些表达式的值
(gdb)display 要显示值的表达式
- next命令:当不需要进入某一函数内部时使用
- 使用quit命令退出gdb
(gdb)quit
显示数据命令
使用display和print命令
内存检查命令
x/format address
format指定了显示单元的个数,后面是显示内存的方式:
(gdb)x/2c 0x120100fa0
使用printf命令
(gdb)printf"%2.2s\n,(char*)0x12100fa0"
第一个2表示最多2个字符,第二个2表示输出从0x12100fa0开始的2个字符
使用set命令
set命令可以显示数据和修改变量的值
使用断点
(gdb)break test.c:21
调试器gdb在程序test.c的21行设置了一个断点
(gdb)break printmessage
在指定函数printmessage()的开始位置设置断点
(gdb)run
开始运行程序,在21行暂停执行,可以在此处单步跟踪或者检测下个变量的值。完成工作后,使用continue恢复程序执行,直到下一个断点或者程序结束。