GDB调试技巧(一)

    不得不说,GDB确实是个调试神器,当你对它了解越加深入之后,你将会发现以前很麻烦的调试过程变得如此简单了!下面我们先来看一些基本的GDB调试指令:

#include <cstdio>
using namespace std;

int main() 
{
    int sum = 0;
    for (int i = 0; i < 100; i++) {
        sum += i;
    }
    printf("The sum of 1 - 100 is %d!\n", sum);
    return 0;
}

    在vim中键入上述代码,然后使用g++调试指令生成对应的可执行文件:

g++ -Wall -g -o test test.cpp

注意:此处必须加入-g选项,保证可执行文件中有调试信息。之后,我们就可以使用指令:gdb + 相应可执行文件名,进行调试了。例如:上文中生成的test文件,gdb test。输入之后我们就进入了gdb中,下面我将给出一张GDB的一些基本指令表供查阅:

rrun运行
ccuntinue运行到下一断点处
qquit退出gdb
tabtab命令补全
hhelp帮助功能
sstep跟入函数
nnext执行到下一行,函数调用作为一行处理
breakbreak添加断点
info breakinfo break查看断点数
deldelete删除断点
llist列出代码,一次仅列出10行
watchwatch观察变量值,每次中断都将显示该值
whatwhat显示变量类型
pprint打印一变量值
startstart从主函数main开始运行调试
finfinish运行直至当前函数返回

    下面,我们就来说说如何在调试中加入断点,观察相应变量或表达式的值等的操作:

    断点在调试启动前添加(即键入r之前),Linux下的gdb调试并不会像Windows下各种IDE一般,需要哪行代码加断点,点一下就行。Linux下的gdb无界面,为了更清楚地找到需要添加断点的位置,我们需要先执行一个l指令(list的缩写)!注意:l仅能列出10行代码,如果我们的代码超过了10行,则需要多次执行l,但我们并不需要再次键入,只需连按回车键就行,当gdb无输入时,连续回车则执行上一次的指令。列出所有代码之后,我们可以通过如下指令添加断点:

break 行数
break 文件名:行数

接下来就该观察相应变量或表达式的值了吧,watch指令可以对某一变量进行观察,但watch指令必须在程序运行之后(即r指令执行之后),watch使用方法如下:

watch 变量名或表达式名

如此,在每一次程序中断时,我们就能看到变量或表达式此时的值了。至于运行到下一断点,键入c指令即可,此时就像VS里的F5,CodeBlocks里的F8了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值