今天读《Linux程序设计》,第10章调试。
1、C语言预处理定义的一些宏可以帮助我们进行调试好
宏 | 说明 |
__LINE__ | 代表当前行号的十进制常数 |
__FILE__ | 代表当前文件名的字符串 |
__DATE__ | 代表当前日期,Mmm dd yyyy格式的字符串 |
__TIME__ | 代表当前时间,hh:mm:ss格式的字符串 |
2、gdb调试
dgb调试需要编译时加入-g
gdb <program> 调试程序
list (l) 显示程序源代码
l 22 显示行号22前后位置的代码
run ( r) 运行程序
breakpoint (break) 设置断点
break 20 断点设置在20行
break fun 断电设置在fun( )函数开始的地方
print (p) 打印变量或者其他表达式的值
print i 打印变量i
print array[0]@5 打印制定数目的数组元素 array[0]~array[4]
display 自动显示表达式的值
step 但不执行,进入函数内部
next (n) 单条语句执行,不进入函数内部
continue (c) 继续运行
backtrace (bt) 栈跟踪,查看函数堆栈,显示程序如何到达现路径
info break 查看断点信息,包括断点号
delete 根据断点号删除断点
clear 删除所有断点
clear fun 删除fun( )函数中的断点
clear 22 删除行号12的所有断点
//~End~