首页 > 编程语言 >Dev-C++ 动态调试功能

Dev-C++ 动态调试功能

时间:2022-10-22 12:58:38浏览次数:39  
标签:函数 int 可以 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

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

总结

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

标签:函数,int,可以,Dev,点击,C++,断点,调试
From: https://www.cnblogs.com/MoyouSayuki/p/16815774.html

相关文章

  • C++ 核心 2.引用
    2引用2.1引用的基本使用作用:给变量起别名语法:数据类型&别名=原名inta=10;int&b=a;b=100;cout<<"a="<<a<<endl;cout<<"b="<<b<<endl;2.2......
  • C++ 核心 2.引用
    2引用2.1引用的基本使用作用:给变量起别名语法:数据类型&别名=原名inta=10;int&b=a;b=100;cout<<"a="<<a<<endl;cout<<"b="<<b<<endl;2.2......
  • C++ 核心 3. 函数进阶
    3函数进阶3.1默认参数语法:返回值类型函数名(参数=默认值){}e:intfunc(inta,intb=10,intc=100){returna+b+c;}注意事项:1.默认参数应该在非默认参数......
  • C++ 核心 4.1 类的封装
    4类和对象面向对象三大特性:封装、继承、多态万物皆对象。对象=属性+行为类是抽象的对象。比如路上有很多(具体的)车,但抽象出来都属于车。定义类的语法:class类名{......
  • C++ Grade Book System
    C++GradeBookSystemDefineandimplementagradebooksystem.Thegradebookmustusepolymorphismtomanageacollectionofassessmentsofdifferenttypes.......
  • C++中static关键字的作用总结
    static的含义static的含义解释为静止的,静态的,当然它在编程语言中也是相关的含义,接下来,让我们看看在C++语言中,static关键字修饰不同的类型时,它的具体含义是什么。static修饰......
  • C++并发编程实战 第二版 电子书 pdf
    作者:安东尼·威廉姆斯(AnthonyWilliams)出版社:人民邮电出版社出品方:异步图书原作名:C++ConcurrencyinAction,SecondEdition 链接:C++并发编程实战第二版 ......
  • c语言—调试篇—笔记
    调试#include<stdio.h>intmain(){char*p="hellobit.";printf("%s\n",p);return0;}#include<stdio.h>intmain(){inti=0;intarr[10]={0};for(i=0;i<=12;i++......
  • C++三角形区域随机行走
    #include<stdio.h>#include<stdlib.h>#include<vector>#include<time.h>#include<algorithm>#include<iostream>usingnamespacestd;vector<vector<int>>a(4);int......
  • 实验3 数组、指针与现代C++标准库
    一.实验结论:1.实验任务5:Info.hpp:#include<iostream>#include<string>#include<iomanip>usingnamespacestd;classInfo{public:Info(){}Info(st......