转载:https://blog.youkuaiyun.com/chen1415886044/article/details/105094688
GDB简介
UNIX及UNIX-like下的调试工具。虽然它是命令行模式的调试工具,但是它的功能强大到你无法想象,能够让用户在程序运行时观察程序的内部结构和内存的使用情况。
一般来说,GDB主要帮助你完成下面四个方面的功能:
1、按照自定义的方式启动运行需要调试的程序。
2、可以使用指定位置和条件表达式的方式来设置断点。
3、程序暂停时的值的监视。
4、动态改变程序的执行环境。
基本命令的操作
GDB中的命令很多,但我们只需掌握其中十个左右的命令,就大致可以完成日常的基本的程序调试工作。

gdb命令拥有较多内部命令。在gdb命令提示符“(gdb)”下输入“help”可以查看所有内部命令及使用说明。

判断文件是否带有调试信息
要调试C/C++的程序,首先在编译时,要使用gdb调试程序,在使用gcc编译源代码时必须加上“-g”参数。保留调试信息,否则不能使用GDB进行调试。
有一种情况,有一个编译好的二进制文件,你不确定是不是带有-g参数,带有GDB调试,这个时候你可以使用如下的命令验证:

如果没有调试信息,则会出现:
Reading symbols from /home/minger/share/tencent/gdb/main…(no debugging symbols found)…done.
/home/minger/share/tencent/gdb/main是程序的路径。
如果带有调试功能,下面会提示:

Reading symbols from /home/minger/share/tencent/gdb/main…done.
说明可以进行GDB调试。
还有使用命令readlef查看可执行文件是否带有调试功能
readelf -S main|grep debug

如果有debug说明有调试功能,如果没有debug。说明没有带有调试功能,则不能被调试。
开始进入正题,GDB启动调试。
调试方式启动运行无参程序
以下是linux下GDB调试的一个实例,先给出一个示例用的小程序,C语言代码:
main.c
————————————————
版权声明:本文为优快云博主「程序猿编码」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/chen1415886044/article/details/105094688
6242

被折叠的 条评论
为什么被折叠?



