Visual Studio 调试器提供了许多强大的功能来帮助你调试应用。 本主题提供了一种快速了解一些基本功能的方法。
创建新项目
打开 Visual Studio 并创建项目。
如果“开始”窗口尚未打开,请选择“ 文件 > 启动窗口”。 在“开始”窗口中,选择 创建新项目。 在搜索框中,键入“空项目”,然后选择C++ 空项目 模板。
如果未看到项目模板,请打开 Visual Studio 安装程序。 选择 具有C++工作负载的桌面开发,然后选择 “修改”。
Visual Studio 创建项目。
创建名为 的新源文件 MyDbgApp.cpp
在MyDbgApp.cpp中,替换以下代码
int main()
{
return 0;
}
使用此代码(请勿删除 #include "stdafx.h"):
#include
#include
using namespace std;
void doWork()
{
list
c1.push_back(10);
c1.push_back(20);
const list
const int &i = c2.front();
const int &j = c2.front();
cout << "The first element is " << i << endl;
cout << "The second element is " << j << endl;
}
int main()
{
doWork();
}
设置断点
断点是一个标记,指示 Visual Studio 应在哪里暂停正在运行的代码,以便你可以检查变量的值、内存的行为,或者确定代码的某个分支是否被执行。 这是调试中最基本的功能。
若要设置断点,请单击函数调用左侧的 doWork 边栏(或选择代码行并按 F9)。
现在按 F5 (或选择 “调试 > 开始调试”)。
调试器会在设置断点的位置暂停。 调试器和应用执行暂停的语句由黄色箭头指示。 函数 doWork 调用的行尚未执行。
小提示
如果循环或递归中存在断点,或者如果有许多频繁单步执行的断点,请使用条件断点以确保代码仅在满足特定条件时挂起。 条件断点可以节省时间,还可以更容易地调试难以重现的问题。
尝试调试C++中与内存相关的故障时,还可以使用断点检查地址值(查找 NULL)和引用计数。
导航代码
有不同的命令指示调试器继续。 我们展示了一个有用的代码导航命令,从 Visual Studio 2017 开始提供。
在断点处暂停时,将鼠标悬停在语句c1.push_back(20)上,直到绿色的运行到单击按钮出现,然后按下运行到单击按钮。
应用将继续执行,调用 doWork,并于你在其中单击按钮的代码行上暂停。
用于单步执行代码的常见键盘命令包括 F10 和 F11。 有关更深入的说明,请参阅 “首先查看调试器”。
检查数据提示中的变量
在当前代码行(由黄色执行指针标记)中,将鼠标悬停在 c1 对象上以显示数据提示。
数据提示显示变量的 c1 当前值,并允许检查其属性。 调试时,如果出现意外值,则表示在前一代码行或调用的代码行上出现 bug。
展开数据提示以查看 c1 对象的当前属性值。
如果要固定数据提示,以便在执行代码时可以继续查看 c1 的值,请单击小图钉图标。 (可将固定的数据提示移动到方便的位置。)
编辑代码并继续调试
如果在调试会话中间确定要在代码中测试的更改,也可以执行此作。
单击第二个 c2.front() 实例,并将 c2.front() 更改为 c2.back()。
多次按 F10(或“调试”“单步跳过”),向前移动调试器并执行已编辑的代码。>
F10 一次使调试器前进一个语句,但是是跳过函数而不是单步执行它们(跳过的代码仍然执行)。
有关使用编辑并继续以及功能限制的详细信息,请参阅 “编辑并继续”。
后续步骤
本教程介绍了如何启动调试器、逐步执行代码和检查变量。 你可能想要大致了解调试器功能,以及指向详细信息的链接。
首先查看调试器