1 查看可执行文件是否含有可调试信息:
readelf -S filename | grep debug
or
nm -a filename | grep debug
or
readelf --debug-dump
2 GDB 条件断点
b point/function if cond //cond不能用()包围
eg: b 11 if i == 50 //i == 50时,在11行停住
eg: b 11 if strcmp(var, "aaa") == 0 //字符串变量为“aaa”时,
3 GDB 修改断点条件
condition //修改断点号为bnum的停止条件
condition //清除断点号为bnum的停止条件
4 GDB线程
set scheduler-locking on
info threads
t(thread) //线程
bt //堆栈信息
5 对文件设置断点
b filename : rowNum //在文件filename的rowNum行设置断点
6 GDB进程
attach pid
7 GDB 设置环境变量
set environment XXXX=xxxxxxx //GDB中使用程序中要用到的环境变量
8 GDB 操作
a. 打印:p/x var //十六进制显示。o: 八进制 t: 二进制 c: 字符 f: 浮点
b. list - //显示当前行前面的源程序
c. watch //表达式的值是否有变化,变化则停住
d. rwatch //expr被读时,停住
e. awatch //expr被读/写时停住
f. 查看内存地址的值:examine
eg: x/ //n: 显示内存长度,f: 显示格式,u: 单位(b单字节, h双字节,w四字节,g八字节)
g. 反汇编:disassemble func
h. 查看变量类型:whatis var
阅读(1049) | 评论(0) | 转发(1) |