Linux下GDB调试工具使用命令详解

8 篇文章 0 订阅

背景:

之前开发的一系列项目,有windows下的也有Linux环境下的,java or C#项目均有其ide工具的强势debug功能,Linux下python项目和c++项目一直都通过写日志进行错误跟踪,听说gdb很强大,本人就我在项目中所遇到的debug的过程进行阐述,命令可能不全,列举的都是我用到的,解决了我的问题,在此作一个纪录。


1. 第一步安装gdb, 这个在网上可以搜索很多,我主要说下Mac下如何快速安装gcc和gdb等工具,相对来说比较简单(可以通过Finder去搜索,苹果商场里面也是免费的),安装完成之后你可以通过Xcode->Preferences到达下面这个界面,只需将Command Line Tools安装即可。


2. Linux环境准备好了之后我们可以随手写一个main.cpp  代码如下:

#include <iostream>
using namespace std;

int main()
{
    cout<<"Hello yangw!"<<endl;
    return 0;
}

 写的代码极其简单,而且没有错误,大家有兴趣可以制造各种错误,我在此就不一一演示了,只说明用到的命令解决问题

 不管是简单的还是复杂的c++程序,多个目录也好,引用了第三方静态or动态库也好,你均会生成一个可执行的文件,gdb均能debug。

谨记:若你要使用gdb来调试你的代码,请在编译语句中均加上  -g  参数

例如上面我的编译过程如 g++ -c -g main.cpp

以下我以一问一答的形式来完成调试过程:

问:程序编译完成之后,gdb如何加载如程序中?

答:若你的可执行程序名为test,   则只需gdb test 即可进入;

问:进入之后如何启动程序?

答:输入命令 r 即可执行程序

问:如何设置断点了?

答: b  filepath:linenum    我比较习惯用这种, b即breakpoint的意思,后面跟文件名 冒号 和你要设置断点所在文件的行号

我在刚接触的时候设断点时遇到了问题,因为代码文件放置在不同的目录且有的还是so文件,这样怎么都设置不到,而查看断点信息又是有的,后来才发现是需要引入你设置断点的那个文件所在的目录需要包含进来,而如何包含呢?输入命令: dir 后跟你要设断点的文件所在路径,例如我要设的文件main.cpp在目录/usr/local/demon下,我只需要在gdb窗口中输入dir /usr/local/demon 即可引入该文件,注意so文件也是一样的,你会发现若你设置路径正确,当文件名很长的时候你可以通过tab键帮助你补全,我个人比较喜欢,跟在Linux下是一样的。

问:如何进行单步调试呢?

答:输入r启动之后当运行到你设置的断点处,程序会停住,等待你调试,单步调试请输入命令s, 即会深入到调用函数中,若你不想进入到底层,就输入命令n,程序即会逐行进行调试,遇到函数执行也只执行一步。


掌握了这些其实就可以自己调试自己的程序了,不用打日志去慢慢查找问题出现的位置了。


在Linux下进行c/c++程序开发,最常出现的就是段错误,还无从查起,若你有这样的问题,请把coredump打开,打开方式:

ulimit -c unlimited  我一般都是这样输入,无限制行数,当然若你的core文件太大的话可以限定行数,如只打印最近的1000行,即输入ulimit -c 1000

当你打开core开关之后,若你程序非正常关闭的话均会生成core文件,你就可以通过gdb去查看该文件找到问题所在。


如:输入 gdb ./test core12312   即gdb  启动你的程序方式   core文件名

进入到gdb之后输入where 或者  bt即可发现你是在哪里报错了,然后再去单步调试,写的比较简短,希望能帮助人也留下点足迹,嘿...








要在 CodeBlocks 中使用 GDB 调试器,您可以按照以下步骤操作: 1. 确保您已经安装了 GDB 调试器。您可以在终端中运行 `gdb --version` 命令来检查是否已安装。 2. 打开 CodeBlocks,并在菜单栏中选择 "Settings"(设置)-> "Debugger"(调试器)。 3. 在 "Selected debugger"(选择调试器)下拉菜单中选择 "GNU GCC Compiler"(GNU GCC 编译器)。 4. 在 "Debugger settings for selected compiler"(选择编译器的调试器设置)面板上,找到 "Executable path"(可执行文件路径)字段,并点击右侧的 "..." 按钮。 5. 在弹出的对话框中,浏览并选择您的 GDB 可执行文件所在的路径。通常情况下,它位于 `/usr/bin/gdb` 或 `/usr/local/bin/gdb`。 6. 确保 "Start from"(开始位置)字段设置为 "GDB/CDB debugger"。 7. 在同一面板上,将 "Additional GDB commands"(额外的 GDB 命令)字段设置为 `-q`。这将禁止显示 GDB 的详细信息,只显示与调试相关的内容。 8. 点击 "OK" 保存更改。 现在,您可以开始使用 GDB 调试器来调试您的代码。请按照以下步骤操作: 1. 在 CodeBlocks 中打开您的项目。 2. 在左侧的工具栏中,找到 "Debug"(调试)按钮,并点击它。或者,您还可以使用快捷键 F8 来启动调试。 3. 当您的程序开始运行时,您可以使用 GDB 提供的调试功能。例如,您可以设置断点、单步执行、查看变量的值等等。 4. 在调试过程中,CodeBlocks 的底部将显示 GDB 的输出和调试信息。您可以在这里查看程序的运行状态和变量的值。 希望这些步骤对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值