前言
"工欲善其事,必先利其器",为了方便Linux驱动设备的开发和调试,建立舒适的开发环境、使用必要的软件工具,以及掌握常用的调试技巧是比较重要的。本篇介绍GDB调试器的主要功能和常见用法,同时在第三部分中,命令顺序按照使用频率由高到低编写,方便阅读和使用。
正文
一、GDB4个主要功能
- 可按照工程师自定义的要求运行程序。
- 让被调试程序在工程师指定的断点处停住,断点可以是条件表达式
- 程序被停住时,可检查此刻程序中所发生的事,并追踪上文
- 动态地改变程序的执行环境
二、GDB使用实例
若有源文件get_timestamp.c, 使用命令gcc get_timestamp.c -o get_timestamp
编译,产生含调试信息的二进制文件get_timestamp,使用命令gdb get_timestamp
进入调试状态
三、调试常用命令
Ctrl+A+X
进入/退出调试界面
win cmd +5
调整命令窗口大小
fs cmd
操作键停在命令窗口
-
r运行程序(run)
set args <参数1> <参数2> ...,可指定运行参数再运行。
-
b 设置断点(break)
b <function/linenum/*address/if >,可接函数名、行数、内存地址、条件表达式。
- c恢复运行(continue)
c [ignore_count],可接ignore_count,表示忽略其后多少次断点。
-
n单步执行(next)
-
p打印数据(print)
p ,接表达式(变量也是一种表达式)
p /,f为输出格式,有:x:十六进制;d:十进制;o:八进制;t:二进制;c:字符格式;f:浮点数格式
-
u跳出循环(until)
-
set修改内存
set 变量名=0
四、参考来源
书籍《Linux设备驱动开发详解:基于最新的Linux 4.0内核》第21章