Dev-C++ 动态调试功能

Dev动态调试

今天发现了Dev还有这个功能,感觉十分神奇,于是记录一下

设置

要想使用动态调试,我们必须要先打开 "产生调试信息" 选项

image

这是我们的页面,这是可以看到上方有一行工具栏,点击 "工具",点击第一行的 "编译选项"

image

之后点击 "代码生成/优化",找到 "连接器",把 "产生调试信息" 这一行设为Yes,不然会有奇怪的问题

开始调试

动态调试可以让你在调试的时候看到每个变量发生的变化,从而挑出bug

假设我们写了一块代码:

#include <iostream>
using namespace std;

int main()
{
    int a, b;
    a = 10, b = 20;
    int c = a + b;
    c = c - 5;
    cout << c << endl;
    return 0;
}

按F5或者点这个紫色的小勾就可以开始调试了image

为了调试,我们必须要让跑得飞快的程序等一下我们,因此我们可以设置断点

在行号上点击一下,就可以在这一行上打一个断点,程序运行到这里就会停下来等我们,而不会运行断点行的内容

image

这时候点击调试小勾就会发现被打上断点的地方变成了蓝色,意味着程序告诉你它走到这里了
image

这时候为了知道a和b的取值,我们可以点击 "添加查看" 或者是热键A添加一个变量,为了让程序知道你说的是哪个,输入的变量必须与程序中声明的变量名一致。

或者我们还可以用光标框选住变量名,点击添加查看,这样程序就会自动把变量记住,并放到监视窗口里
image

我们已经操作完毕,于是可以点击下一步让程序运行下一行了

image

下一行是赋值语句,给a和b一个值,可以看到左边的小窗口也发生了变化!

继续运行也是同理

点击紫勾勾旁的红叉叉即可停止调试image

发现

除了一个断点,还可以打两个断点

image

点击调试

image

这时候我们不想看a和b赋值了,就可以点击 "跳过" 直接跳到下一个断点也就是定义字符数组op处image

点击下一步

image

可以发现不管是int还是bool或者是字符数组都可以进行监视,实际上除了string,vector等数据结构,基本都可以进行监视

函数相关

假设我们写了一个有函数的程序,并在函数中打了断点

#include <iostream>
using namespace std;

int f(int x)
{
    int sum = 1;
    while(sum <= 20)
    {
        sum += 2;
    }
    return x * 2 - 12;
}

int main()
{
    int t = f(23);
    t -= 1;
    cout << t << endl;
    return 0;
}

image

调试发现,由于第16行调用了这个函数,于是运行函数的时候便会被断点卡住
image

这时候假设我们已经发现这个函数没有问题了,我们想要直接回到主函数中,我们就可以点击 "跳过函数"image

这样就直接跳过了中间一大块的函数代码,方便我们调试,值得注意的是,如果你写的是递归,点击跳过函数后程序不会直接跳出,而是会进入下一层递归。

总结

动态调试是一个暗藏在古董中的高科技,只要能熟练运用,一定可以在算法之路上走得更舒服~

posted @ 2022-10-22 12:37  MoyouSayuki  阅读(751)  评论(1编辑  收藏  举报
:name :name