Linux下GDB调试C++代码



地址:http://jingyan.baidu.com/article/acf728fd464984f8e410a369.html

Linux下GDB调试C++代码

  • |
  • 浏览:149
  • |
  • 更新:2015-05-27 15:28
  • |
  • 标签:linux 
  • Linux下GDB调试C++代码 1
  • Linux下GDB调试C++代码 2
  • Linux下GDB调试C++代码 3
  • Linux下GDB调试C++代码 4
  • Linux下GDB调试C++代码 5
  • Linux下GDB调试C++代码 6
  • Linux下GDB调试C++代码 7
分步阅读
百度经验:jingyan.baidu.com

Linux环境在跨平台中编程中被大家广泛使用,大家可以在Linux上做一些Windows上的C++的代码的编程,但是由于环境不相同,所以代码的调试可能存在很大的区别,下面讲下Linux下的gdb工具调试C++代码的一些步骤。

百度经验:jingyan.baidu.com

工具/原料

  • Centos6.4版本环境
百度经验:jingyan.baidu.com

方法/步骤

  1. 1

    首先,先去创建一个简单的C++代码。实现的功能很简单。就是初始化一个变量num=1,然后在做一个num+=2的操作。

    Linux下GDB调试C++代码_第1张图片 步骤阅读
  2. 2

    编写好代码后,我们需要生成一个可执行文件去运行程序。

    g++ -g test.cpp -o main

    如上指令,我们通过g++去编译test.cpp,并生成可执行文件main

    Linux下GDB调试C++代码_第2张图片 步骤阅读
  3. 3

    然后我可以运行一下代码看下结果:

    Linux下GDB调试C++代码_第3张图片 步骤阅读
  4. 4

    接着进行代码的调试,在命令行输入gdb,然后进入了gdb的环境下。

    Linux下GDB调试C++代码_第4张图片 步骤阅读
  5. 5

    然后输入file main

    这样我们就告诉gdb我们要调试main工程

    Linux下GDB调试C++代码_第5张图片 步骤阅读
  6. 6

    然后我们输入l,就可以罗列出当前代码的信息

    Linux下GDB调试C++代码_第6张图片 步骤阅读
  7. 7

    我们看到了main函数,然后通过输入b main在main函数入口处加一个断点

    Linux下GDB调试C++代码_第7张图片 步骤阅读
  8. 8

    ok,加下来输入r,我们开始运行代码,然后代码就停止到设置的断点处

    Linux下GDB调试C++代码_第8张图片 步骤阅读
  9. 9

    然后我们看到了print函数,然后输入s,单步进入函数体

    Linux下GDB调试C++代码_第9张图片 步骤阅读
  10. 10

    然后我们可以输入n,进行单步的调试

    Linux下GDB调试C++代码_第10张图片 步骤阅读
  11. 11

    我们会看到一个变量num的值,然后我们输入print num,参看变量值

    Linux下GDB调试C++代码_第11张图片 步骤阅读
  12. 12

    然后n单步调试后,这时候程序进行了num+=2的操作,我们通过print num可以参看变量值发生了变化

    Linux下GDB调试C++代码_第12张图片 步骤阅读
  13. 13

    然后我们需要看的已经结束了,那么输入c,程序继续执行,由于没有设置其他断点,这时候程序运行结束,并且输出一些信息。

    Linux下GDB调试C++代码_第13张图片 步骤阅读
  14. 14

    OK,这样我们的整个调试就结束了。

    END
百度经验:jingyan.baidu.com

一些调试指令

  1. 1

    1、file <文件名>

    加载被调试的可执行程序文件。因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径。

    示例:(gdb) file gdb-sample

    2、r

    Run的简写,运行被调试的程序。如果此前没有下过断点,则执行完整个程序;如果有断点,则程序暂停在第一个可用断点处。

    示例:(gdb) r

    3、c

    Continue的简写,继续执行被调试程序,直至下一个断点或程序结束。

    示例:(gdb) c

    4、b <行号>

       b <函数名称>

       b *<函数名称>

       b *<代码地址>

    b: Breakpoint的简写,设置断点。两可以使用“行号”“函数名称”“执行地址”等方式指定断点位置。

    其中在函数名称前面加“*”符号表示将断点设置在“由编译器生成的prolog代码处”。如果不了解汇编,可以不予理会此用法。

    5、set args [parameter]

    gdb调试的时候,设置命令行参数。

    6、bt

    bt可以去查看堆栈信息。down和up和一个一个打印堆栈信息。bt直接打印全部堆栈信息。

    7、n

    单步调试

    8、s

    单步进入

    END
百度经验:jingyan.baidu.com

注意事项

  • 调试的时候一定要注意断点的设置,否则就没有意义

你可能感兴趣的:(Linux下GDB调试C++代码)