您的位置:首页 > 汽车 > 时评 > gdb 【Linux】

gdb 【Linux】

2024/7/6 19:59:00 来源:https://blog.csdn.net/qq_73478334/article/details/139562045  浏览:    关键词:gdb 【Linux】

程序发布方式:
 1、debug版本:程序会被加入调试信息,以便于进行调试。
 2、release版本:不添加任何调试信息,是不可调试

确定一个可执行程序是debug,还是release

[cxq@iZ7xviiy0goapxtblgih6oZ test_gdb]$ gdb mycode

看是否有调试信息
在这里插入图片描述

readelf 读取一个可执行程序的二进制构成

[cxq@iZ7xviiy0goapxtblgih6oZ test_gdb]$ readelf -S mycode | grep  -i debug
[cxq@iZ7xviiy0goapxtblgih6oZ test_gdb]$ 

gcc默认编译是release方式发布的,无法直接调试
如果要以debug方式发布,必须携带: -g选项
在这里插入图片描述
可以发现有debug信息
在这里插入图片描述
一个可执行程序要被gdb调试,必须以debug方式发布,必须加-g

gdb命令

调试:
run/r :运行代码(启动调试)。
next/n:逐过程调试。类似vs的f10
step/s:逐语句调试。类似vs的f11
until 行号:跳转至指定行。
finish」:执行完当前正在调用的函数后停下来(不能是主函数)。
continue/c:运行到下一个断点处。
set var 变量=x:修改变量的值为x。
显示:
list/l n:显示从第n行开始的源代码,每次显示10行,若n未给出则默认从上次的位置往下显示.。
list/l 函数名:显示该函数的源代码。
print/p 变量:打印变量的值。
print/p &变量:打印变量的地址。
print/p 表达式:打印表达式的值,通过表达式可以修改变量的值。
display 变量:将变量加入常显示(每次停下来都显示它的值)。
display &变量:将变量的地址加入常显示。
undisplay 编号:取消指定编号变量的常显示。
bt:查看各级函数调用及参数。
info/i locals:查看当前栈帧当中局部变量的值。

【断点】
1)「break/b n」:在第n行设置断点。
2)「break/b 函数名」:在某函数体内第一行设置断点。
3)「info breakpoint/b」:查看已打断点信息。
4)「delete/d 编号」:删除指定编号的断点。
5)「disable 编号」:禁用指定编号的断点。
6)「enable 编号」:启用指定编号的断点。

退出gdb
quit/q:退出gdb。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com