gdb调试关键点记录
Posted 禾田守望者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 | 当前层函数后面的直接不执行,返回到上一层.可以带返回值,返回值会赋给函数调用方. |
以上是关于gdb调试关键点记录的主要内容,如果未能解决你的问题,请参考以下文章