Dev动态调试
今天发现了Dev还有这个功能,感觉十分神奇,于是记录一下
设置
要想使用动态调试,我们必须要先打开 "产生调试信息" 选项
这是我们的页面,这是可以看到上方有一行工具栏,点击 "工具",点击第一行的 "编译选项"
之后点击 "代码生成/优化",找到 "连接器",把 "产生调试信息" 这一行设为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或者点这个紫色的小勾就可以开始调试了
为了调试,我们必须要让跑得飞快的程序等一下我们,因此我们可以设置断点
在行号上点击一下,就可以在这一行上打一个断点,程序运行到这里就会停下来等我们,而不会运行断点行的内容
这时候点击调试小勾就会发现被打上断点的地方变成了蓝色,意味着程序告诉你它走到这里了
这时候为了知道a和b的取值,我们可以点击 "添加查看" 或者是热键A添加一个变量,为了让程序知道你说的是哪个,输入的变量必须与程序中声明的变量名一致。
或者我们还可以用光标框选住变量名,点击添加查看,这样程序就会自动把变量记住,并放到监视窗口里
我们已经操作完毕,于是可以点击下一步让程序运行下一行了
下一行是赋值语句,给a和b一个值,可以看到左边的小窗口也发生了变化!
继续运行也是同理
点击紫勾勾旁的红叉叉即可停止调试
发现
除了一个断点,还可以打两个断点
点击调试
这时候我们不想看a和b赋值了,就可以点击 "跳过" 直接跳到下一个断点也就是定义字符数组op处
点击下一步
可以发现不管是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;
}
调试发现,由于第16行调用了这个函数,于是运行函数的时候便会被断点卡住
这时候假设我们已经发现这个函数没有问题了,我们想要直接回到主函数中,我们就可以点击 "跳过函数"
这样就直接跳过了中间一大块的函数代码,方便我们调试,值得注意的是,如果你写的是递归,点击跳过函数后程序不会直接跳出,而是会进入下一层递归。
总结
动态调试是一个暗藏在古董中的高科技,只要能熟练运用,一定可以在算法之路上走得更舒服~
标签:函数,int,可以,Dev,点击,C++,断点,调试 From: https://www.cnblogs.com/MoyouSayuki/p/16815774.html