gdb 调试_GDB不同文件断点调试

GDB不同文件断点调试

c6a9bae1c9a12acdaee637ab0b0a0244.png

作为一个linux下C/C++开发人员,调试工具是必不可少的一项技能,在windows平台,会有很多工具给我们用,比如VS,自带很强大的调试工具。当然,linux平台也是毫不逊色,GDB工具是一个非常强大的代码调试工具。今天主要介绍的是GDB在多文件中的调试方法,不会一一介绍基础命令的。


一、同一个目录中的文件 现在,有三个文件,分别为main.cpp、test1.cpp、test2.cpp文件,这个是很简单的程序,只是为了说明调试过程。

代码如下:

head.h#include using namespace std;void test1();void test2();
test2.cpp#include "head.h"​void test2(){    cout<
#include "head.h"​void test1(){    cout<
#include "head.h"​int main(){    test1();    test2();    return 0;}​

这部分代码都在同一个目录下:GDB/ManyFiles


Step1: 编译代码,记得加参数 -g

GDB/ManyFiles$ g++ main.cpp test1.cpp test2.cpp -o test -gGDB/ManyFiles$ lshead.h  main.cpp  test  test1.cpp  test2.cpp

Step 2: 开始调试

GDB/ManyFiles$ gdb test ​

Step 3: 同一个文件夹中的文件,我们可以用 break file1.cpp: linenum

(gdb) l 11   #include "head.h"2   3   int main()4   {5       test1();6       test2();7       return 0;8   }(gdb) b test1.cpp:4Breakpoint 1 at 0x4008b2: file test1.cpp, line 4.​

Step 4: 启动程序,程序会在断点处停止运行

(gdb) l 11   #include "head.h"2   3   int main()4   {5       test1();6       test2();7       return 0;8   }(gdb) b test1.cpp:4Breakpoint 1 at 0x4008b2: file test1.cpp, line 4.(gdb) runStarting program: /mnt/hgfs/share/C++/GDB/ManyFiles/test ​Breakpoint 1, test1 () at test1.cpp:55       cout<

Step 5: 退出GDB调试

(gdb) cContinuing.test1test2[Inferior 1 (process 56202) exited normally](gdb) quit​

上面这个步骤就是我们的多文件调试,当然,在大型项目中,文件往往都是在不同的文件夹中,所以,我们也要掌握在不同问价夹中调试的办法。

二、不同文件夹中文件调试 代码还是上面的代码,只是会放在不同的目录下: GDB/test1:test1.cpp GDB/test2:test2.cpp GDB/ManyFiles:main.cpp

Step1: 编译代码,记得加参数 -g

GDB/ManyFiles$ GDB/ManyFiles$ g++ main.cpp ../test1/test1.cpp ../test2/test2.cpp -o test -gGDB$ lsManyFiles  test1  test2​

Step 2: 开始调试

GDB/ManyFiles$ gdb test ​

Step 3: 不同文件夹中的文件,我们可以用 directory 命令修改路径

(gdb) directory ../test1/Source directories searched: /mnt/hgfs/share/C++/GDB/ManyFiles/../test1:$cdir:$cwd (gdb) b test1.cpp:2Breakpoint 1 at 0x4008b2: file ../test1/test1.cpp, line 2.(gdb) rStarting program: /mnt/hgfs/share/C++/GDB/ManyFiles/test ​Breakpoint 1, test1 () at ../test1/test1.cpp:55       cout<

Step 4: 启动程序,程序会在断点处停止运行

(gdb) l 11   #include "head.h"2   3   int main()4   {5       test1();6       test2();7       return 0;8   }(gdb) b test1.cpp:4Breakpoint 1 at 0x4008b2: file test1.cpp, line 4.(gdb) runStarting program: /mnt/hgfs/share/C++/GDB/ManyFiles/test ​Breakpoint 1, test1 () at test1.cpp:55       cout<

Step 5: 退出GDB调试

(gdb) cContinuing.test1test2[Inferior 1 (process 56202) exited normally](gdb) quit​

这就是今天介绍的GDB多文件断点调试的全部内容。

de9f35df1a14736e8175453ff26c4639.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值