着手使用 Visual Studio 2017(二):调试基础

请注意,本文编写于 526 天前,最后修改于 178 天前,其中某些信息可能已经过时。

调试是编程中的重要工作。调试自己的代码,我们可以快速跟踪 Bug;而调试别人的代码,我们能可以搞清楚别人程序的运行方式,进而研究算法等等。本文图文并茂地介绍 VS 中调试功能的基本用法,包括设置断点、步进调试、查看变量等操作,作入门之用。

开始运行调试

点击上方【本地 Windows 调试器】或按下F5快捷键即可。

 

设置普通断点

断点调试是最基本的调试方法。如果你在代码的某一行设置了断点,那么调试时程序运行到这一行时会暂停并等待调试者的指令。要在 VS 中设置断点,在该行代码上点击右键,选择【断点】-【插入断点】即可。

设置断点后,行号前面会出现一个红点。直接点击该红点也可以快速添加或删除断点。

 

注意,程序暂停在断点处的意思是,上一行已执行,这一行尚未执行。行号前的黄色箭头代表这是将要执行的下一条语句。效果如下

这个黄色箭头可以拖动,但是打乱程序本身的执行顺序可能会导致意想不到的情况。

如果程序中设置了不止一处断点(或者断点位置在循环中,可能被多次执行),那么点击【继续】按钮即可直接跳转至下一断点处,中间过程不再暂停。

 

设置条件断点

条件断点的意思是,执行到断点行先判断是否满足条件,如果条件为真则暂停,否则忽略。条件断点是在 IDE 中设置的,无需修改源代码。
右键断点,选择【条件】,然后可以按自己的意图添加条件断点。比如我想让下面的循环到i≥8的时候暂停,那么就可以如下设置:

 

步进调试

步进调试按钮默认在 VS 窗口中上方位置,共四个,分别是“逐语句”“逐过程”“跳出”,当然还有“继续”。我们用这段示例代码来讲解,在第 6 行设置了一个普通断点:

#include <iostream>
void print(int x);
int main()
{
    int i = 1;
    while (i < 100) {
        print(i);
        i *= 2;
    }
    std::cout << "Bye" << std::endl;
    return 0;
}
void print(int x) {
    std::cout << x << std::endl;
}

 

逐语句

你还可以在此窗口修改变量的值,但这可能会出现意料之外的结果。如果我在上面直接把 i 的值修改为 100,那么继续运行时将直接跳出循环,在更复杂的程序中,可能会导致部分代码未执行,也可能导致指针错误等。因此要谨慎使用。

 

写在后面

本文讲解的都是 VS 调试中最最最基本的操作,也是初学者必须要学会的操作。VS 作为“宇宙第一 IDE”,其调试功能是非常强大的,如果你有疑问,自己动手尝试是最好的解决方法。


Comments

添加新评论

已有 1 条评论