使用GNUgdb调试Linux CC++可执行程序查看出错源代码、设置断点

使用GNUgdb调试Linux CC++可执行程序查看出错源代码、设置断点,第1张

gdb是GNU开源组织发布的一个强大的Linux程序调试工具,比图形化的调试工具更强大,主要来调试C/C++语言程序。

Debug 版本的可执行程序包含调试信息,用于程序员调试程序。

Release 版本的可执行程序往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以方便用户使用。

用gcc/g++编译时,要加上-g选项生成debug版本的可执行程序,否则就无法使用gdb调试了。

r 表示开始run, 如果在运行的过程中发生了错误,比如segmentation fault,可以查看此时的出错源代码:

通过b或者break设置断点,断点的设置可以通过函数名、行号、文件名+函数名、文件名+行号以及偏移量、地址等进行设置。

比如在function Peer_auto_save上设置断点,在peer.c的第136行设置断点:

从断点处继续运行

退出gdb

2009年12月29日,程序调试工具 GDB 7.0.1 发布,新版本修正了7.0版本的一些严重的堆栈溢出bug,这些bug可能导致 GDB 调试进程中断,修正了在 FreeBSD 和 IRⅨ 系统下无法编译的问题,增加了对 Thumb2调试的支持,还有其他一些小bug的修复。

2010年03月19日,GDB 7.1 发布,

详细改进内容:多程序调试的支持;

位置独立的可执行文件(派)调试的支持;

新的目标(包括一个模拟器):Xilinx MicroBlaze和瑞萨RX

Python支持增强;

c++支持扩展;

新tracepoint功能;

过程记录的改进

远程协议扩展。

2010年09月06日 ,GDB 7.2 发布,

该版本改进记录:

⒈ 支持D语言

⒉ C++ 改进,支持参数依赖查找ADL,静态常量类成员和改进了用户自定义 *** 作符的支持

⒊ Python 调试的改进,包括断点、符号、符号表、程序空间、线程等可通过命令行进行 *** 作

⒋ Furthermore,enhancements were made for tracepoints and for GDBserver.在跟踪点和GDB程序上有了改善。

⒌ 支持 ARM Symbian 平台

⒍ 其他方面的改进和bug修复。

2011年08月26日,GDB 7.3a 发布,

变化:

1。GDB可以理解线程的名字。

2。这个命令”线程名称”(指定一个名称)和“线程找到[REGEXP]”(匹配名称、目标ID,或者额外的信息)被添加。

3。Python脚本支持是大大增强。

4。在c++的支持,异常处理是提高,模板参数放在范围在一个实例化时调试。

5。线程调试的核心转储在GNU / Linux成为可能。

6。最初支持C语言版本的OpenCL。

7。许多其他改进。

gdb 被断点替换的指令保存到:输入run或r回车就能运行到设置的断点处,输入next或s回车单步运行。

启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。可让被调试的程序在你所指定的调置的断点处停住。当程序被停住时,可以检查此时你的程序中所发生的事。

gdb断点:

break line-number 使程序恰好在执行给定行之前停止。

break function-name 使程序恰好在进入指定的函数之前停止。

break line-or-function if condition 如果condition(条件)是真,程序到达指定行或函数时停止。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8053900.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存