好的,那么当调试时,例如当我在简单的字符串声明上设置断点时
string a;
然后按f11(单步执行)我的调试器单步执行xstring
文件,我不想要它。我希望它只进入我的代码。这在C#项目中很好用,但在C项目中就不行了。
我是如何在Visual Studio中为C项目定义它的:
我如何在C#中使用它,它在哪里工作得很好:
我已经启用了“只是我的代码”,我不知道该怎么办。我只是不想让它介入,而不是我的文件。
好的,那么当调试时,例如当我在简单的字符串声明上设置断点时
string a;
然后按f11(单步执行)我的调试器单步执行xstring
文件,我不想要它。我希望它只进入我的代码。这在C#项目中很好用,但在C项目中就不行了。
我是如何在Visual Studio中为C项目定义它的:
我如何在C#中使用它,它在哪里工作得很好:
我已经启用了“只是我的代码”,我不知道该怎么办。我只是不想让它介入,而不是我的文件。
2条答案
按热度按时间xa9qqrwz1#
你提到的C#特性叫做“Just My Code”。不幸的是,Visual Studio没有以与C相同的方式实现它。documentation说:
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
的添加文件,其中包含以下内容:现在,当我在Visual Studio中调试并“进入”某些内容时,所有C++标准库函数都被跳过。
请注意,VisualStudio并没有非常严格地验证XML文件的实际格式。我实际上使用了Visual Studio 2015 documentation中解释的更简单的形式。
j8ag8udp2#
Visual Studio 2017版本15.8附带了对C项目的“Just My Code”的改进支持,如documentation中所述:
从Visual Studio 2017版本15.8开始,还支持用于代码单步执行的Just My Code。此功能还需要使用/JMC(Just my code debugging)编译器开关。在C项目中,默认情况下启用该开关。对于“调用堆栈”窗口和“仅我的代码”中的调用堆栈支持,不需要/JMC开关。
因此,需要在Debug配置中为所有自己的C++项目设置
\JMC
编译器开关:使用Visual Studio 2022进行测试,这个编译器开关工作得非常好,不再需要
.natstepfilter
来跳过std::.*
。