天天看点

调试工具gdb

调试工具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恢复程序执行,直到下一个断点或者程序结束。

继续阅读