首页 > 编程笔记 > C++笔记 阅读:1

DevC++调试程序详解(图文并茂,新手必看)

所谓调试程序,就是控制编译器一行一行地执行代码,过程中可以清楚地看到每个变量值的变化情况、函数的调用过程等,进而发现程序中隐藏的错误或者低效的代码。

Dev C++ 作为一款免费、开源的 C/C++ IDE,内嵌了 GCC 编译器和 GDB 调试器,既能编译、运行程序,也能调试程序。

在学习如何程序调试之前,先创建一个用于调试的程序代码:
#include <stdio.h>
#include <string.h>  // 包含字符串函数头文件

int main(int argc, char *argv)
{
    printf("Hello World!\n");

    // 添加代码开始
    char *str = new char[100];  // 定义字符串变量
    strcpy(str, "Hello Word!"); // 给字符串赋值

    int s, a, b;     // 定义整型变量
    a = 5;           // 赋初值
    b = 10;
    s = a + b;       // 求和

    printf("str:%s\n", str);  // 输出字符串
    printf("s:%d\n", s);      // 输出求和结果
    // 添加代码结束

    return 0;
}
程序运行结果为:

Hello World!
str:Hello Word!
s:15

DevC++进入调试状态

默认情况下,程序会瞬间从开头执行到结尾,除非中途出现运行时错误。要想让程序暂停执行,就需要设置一个断点(BreakPoint)。可以把断点简单地理解成障碍物,汽车遇到障碍物不能通行,程序遇到断点就会暂停执行。

Dev C++ 中给程序设置断点的方法很简单。单击代码所在行的行号,即可添加一个断点,如下图所示。


图 1 添加断点

添加断点后,单击“编译运行”按钮运行程序时,断点不会生效。只有单击“调试”按钮运行程序时,断点才会生效。Dev C++ 中,与编译、运行、编译运行、调试相关的 4 个按钮如下图所示:


图 2 Dev C++中按钮作用

开始调试

调试是发现程序错误的有效方法。通过简单的调试操作,可以解决程序设计中出现的大部分错误。

单击“调试”按钮,或者按 Fn+F5 快捷键,程序开始执行,直到第7行代码处(当前行代码尚未运行)暂停,如下图所示。


图 3 开始调试

程序暂停执行后,借助调试窗口中的按钮可以查看某些变量的值,还可以控制编译器继续往下执行程序。调试窗口中部分常见按钮的用法如下:

变量的跟踪与查看

设置断点后,进入调试运行状态。按 F7 键单步执行到变量所在代码行时,Variables 窗口中将显示当前代码行中变量的值,根据这个值可判断程序计算是否正确。

例如,循环输出一组数的累加和,代码如下:
#include <iostream>
using namespace std;

int main(int argc, char *argv[])
{
    int sum = 0;
    for (int i = 0; i < 10; i++, i++)
        sum += i;
    cout << sum << "\n";
    return 0;
}
设置断点于第 8 行“sum +=i;”语句,开始调试后,单击“添加查看”按钮,监视变量 sum 值的变化情况,如下图所示:


图 4 添加要监控的变量

初始状态下,变量 sum 的值为 0;

图 5 监控变量

调试过程中,Dev C++ 支持同时监控多个变量,还支持在程序中设置多个断点,如下图所示。


图 6 多个断点和监控多个变量

调试的注意事项

程序修改后,调试之前一定要先进行编译。

Dev C++ 在 Windows 10 上的兼容性并不好,有时会出现各种问题。例如,某些版本的 Dev C++ 调试 C++ 程序时,遇到 endl 会出现“卡死”的情况,无法继续调试程序。遇到这种情况,最简单的解决方案是:将 endl 用 ‘\n’ 替换。

相关文章