gdb调试关键点记录

1.使用gcc时,需要使用gcc -g选项

2.如果想要把生成的可执行文件的调试信息去掉,可以使用strip命令.

3.调试程序时,最好把编译器的优化给关掉

gdb调试程序的三种方式:

1.gdb filename

2.gdb attach pid # 分离可以用detach

3.gdb filename corename  

gdb常用的命令:

命令(简写) 含义
help command 救命啊,命令
list(l) 列出附近的代码,l -表示前面的.
break(b) 打断点

b funcname

b LineNo

b filename:LineNo

run(r) 运行
continue(c) 运行到下一个断点处
print(p)

打印, 可以查看错误p strerror(errorno)

也可以用来修改变量,比如p a = 3.

也可以计算表达式, p 1+2

   
ptype 打印类型,也可以打印结构体内容
info thread

打印线程的信息

切换用thread + 线程序号

info args 打印参数信息
backtrace(bt) 调用堆栈,可以使用 f 堆栈号 来切换
frame(f) 切换到某个堆栈
   
info break(info b) 查看断点信息
enable  

+断点编号(可以多个):表示对某个起作用; 

不加表示对所有起作用

disable
delete
   
next(n) 单步步过
step(s) 单步步入
util util LineNo 执行到某行
jump(j) j LineNo或者函数地址 跳转到某处
finish 执行完当前层函数,返回到上一层
return 当前层函数后面的直接不执行,返回到上一层.可以带返回值,返回值会赋给函数调用方.
   
disassemble 

反汇编, set disassembly-flavor intel 可以设置为intel风格,就是VS下的那种风格

tb 临时断点,只第一次起作用
set args 设置参数
watch

watch监视变量,当变量发生变化时就会自动中断,很神奇是不是~

 删除watch的方式:  先info watch,然后删除对应的编号.

display

显示你添加进去的变量,每一次中断的位置都会显示

   
新战场:https://blog.csdn.net/Stephen___Qin
原文地址:https://www.cnblogs.com/Stephen-Qin/p/12764810.html