在 Visual Studio 2017 中调试 C++ 应用程序不会进入我的代码。有办法关掉它吗?

Ara*_*vae 5 c++ visual-studio

好吧,在调试时,例如当我在简单的字符串声明上设置断点时

string a;
Run Code Online (Sandbox Code Playgroud)

然后按 f11(步入)我的调试器步入xstring文件,但我不想要它。我希望它只进入我的代码。这适用于 C# 项目,但不适用于 C++ 项目。

我如何在 Visual Studio 中为 C++ 项目定义它: C++

我如何在 C# 中使用它,效果很好: C# 以及我希望 C++ 中的内容

我启用了“仅我的代码”,但我不知道该怎么办。我只是不想让它介入我的文件。

Chr*_*ckl 5

您所指的 C# 功能称为“Just My Code”。不幸的是,Visual Studio 没有以与 C++ 相同的方式实现它。正如文档所说:

C++ Just My Code 与 .NET Framework 和 JavaScript Just My Code 不同,因为单步执行行为独立于调用堆栈行为。

不过,有一个解决方法:

您可以创建自己的.natstepfilter.natjmc自定义%USERPROFILE%\My Documents\Visual Studio 2015\Visualizers.

尽管文档中存在拼写错误(“2015”)并且其设计方式极其复杂,但这个技巧确实有效!

例如,在我的计算机上安装 Visual Studio 2017 后,我可以转到一个包含以下内容的C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Packages\Debugger\Visualizers添加文件:.natstepfilter

<?xml version="1.0" encoding="utf-8"?>  
<StepFilter xmlns="http://schemas.microsoft.com/vstudio/debugger/natstepfilter/2010">  
    <Function>  
        <Name>std::.*</Name>  
        <Action>NoStepInto</Action>  
    </Function>  
</StepFilter>  
Run Code Online (Sandbox Code Playgroud)

现在,当我在 Visual Studio 中调试并进入某些内容时,所有 C++ 标准库函数都会被跳过。

请注意,Visual Studio 并未非常严格地验证 XML 文件的实际格式。我实际上使用了Visual Studio 2015 文档中解释的更简单的形式。