GDB学习记录

GDB(GNU symbolic debugger)简单地说就是一个调试工具。它是一个受通用公共许可证即GPL保护的自由软件。

一般来说, GDB 可以帮助我们完成下面四个方面的功能:
1、启动程序,可以按照我们自定义的要求随心所欲的运行程序。
2、可以让调试程序在我们所指定的位置的断点处停止。
3、当程序停止时,可以检查此时我们的程序中所发生的事情。
4、动态的改变我们程序的执行环境
 

一般来说 ,GDB 主要调试的是 C/C++程序。要调试 C/C++程序,首先在编译时,我们必须要把调试信息加到可执行文件中。使用编译器(cc/gcc/g++)的-g 参数可以做到这一点,以 main.c 源文件为例,正常情况下,使用 GCC 编译该源代码的指令如下:

gcc -g main.c -o test

 

main.c:

#include <stdio.h>
int main ()
{
    int n = 1;
        int sum = 0;
    while (n <= 100)
    {
        sum = sum + n;
        n = n + 1;
    }
        printf("sum = %d\n", sum);
    return 0;
}

在生成包含调试信息的可执行文件的基础上,启动 GDB 调试器之后结果如下:

该指令在启动 GDB 的同时,会打印出一堆免责条款。通过添加 --silent(或者 -q、--quiet)选项,可将比部分信息屏蔽掉:

 

gdb常用的调试指令如下:

GDB常用调试指令
(gdb) break xxx
(gdb) b xxx

在源代码指定的某一行设置断点,其中 xxx 用于指定具体打断点的位置,可以是代码行号、函数名等等,我们还可以这样:

break filename:lineNumber 在名称为filename的文件中的第lineNumber行打断点
break filename:function  在名称为filename的文件中的function函数入口处打断点

(gdb) run
(gdb) r
执行被调试的程序,其会自动在第一个断点处暂停执行。
(gdb) continue
(gdb) c
当程序在某一断点处停止运行后,使用该指令可以继续执行,直至遇到下一个断点或者程序结束。
(gdb) print xxx
(gdb) p xxx
打印指定变量的值,其中 xxx 指的就是某一变量名。
(gdb) list
(gdb) l
显示源程序代码的内容,包括各行代码所在的行号

(gdb) info breakpoints
(gdb) i b

(gdb) info b

查看断点相关的信息

 

 

 

gdb常用调试指令操作效果如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值