gdb 调试程序

Posted 三七鸽

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gdb 调试程序相关的知识,希望对你有一定的参考价值。

一. 何为gdb

    1. UNIX及UNIX-like下的调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具相比于VC、真的优点是具有修复网络断点以及恢复链接等功能,比BCB的图形化调试器有更强大的功能。所谓“尺有所短,寸有所长”就是这个道理。

    2. 总的来说,GDB, 又称GNU调试器,是用来帮助调试我们程序的工具

二. gdb 有何用

    1. GDB可以干以下几件事:
        1.1. 给程序设置(特定条件下的)断点
        1.2. 当程序停在断点处时,我们查看所有变量、寄存器的值
        1.3. 当程序停在断点处时,我们除了能查看所有变量、寄存器的值以外,还能在不改变源代码的情况下改变这些值(这个确实屌)

    2. GDB 常用命令

 

三. gdb的使用

    1. gbd 基本语法

         1.1. 先写一个test.c 

1 #include <stdio.h>
2 int main()
3 {
4     int a = 1;
5     int b = a;
6     printf("a = %d, b = %d\\n",a, b);
7     return 0;
8 
9 }
View Code

         1.2. 编译文件

gcc -o test test.c  -g

               1.2.1. 加上-g选项以后,gcc在编译是会做以下额外的操作:

                     1. 创建符号表,符号表包含了程序中使用的变量名称的列表。

                     2. 关闭所有的优化机制,以便程序执行过程中严格按照原来的C代码进行。

        1.3. 进入gdb

 

         1.4. 常用命令使用

             1.4.1. start

                  1. 用start开始单步调试,程序从main开始

 

 

            1.4.2. 单步执行<n>

  

 

             1.4.3. gdb断点调试

 

             1.4.4. gdb 设置观察点

 

     2. 使用gdb 定位段错误

        2.1. 编写一个带有段错误的程序

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 int main(int argc, char *argv[])
 5 {
 6     int a =1;
 7     int b = 0;
 8     printf("a/b = %d\\n",a/b);
 9     return 0;
10 }
View Code

           2.1.1. 编译程序,及执行

        2.2. 测试流程

        

 

 

       

以上是关于gdb 调试程序的主要内容,如果未能解决你的问题,请参考以下文章

GDB代码调试与使用

gdb 调试

代码调试工具GDB

gdb调试中怎么查看其中一行的汇编代码

linux 下面怎么用gdb调试多个.c文件?

如何使用 gdb 调试 GUI 程序