在逐步调试过程中,我经常使用“逐步进入”来停在我正在调试的部分的每一行代码上,以查看所有被执行的代码。
但库调用可能会干扰这个工作流程:调试器会跳转到某些STL文件并在那里继续执行。然后我必须按“跳出”以返回到自己的代码。
有没有办法防止调试器打开STL源文件? 是否有黑名单或设置?我是使用原生C++代码。不幸的是,“只有我的代码”调试器设置仅适用于托管代码。
在逐步调试过程中,我经常使用“逐步进入”来停在我正在调试的部分的每一行代码上,以查看所有被执行的代码。
但库调用可能会干扰这个工作流程:调试器会跳转到某些STL文件并在那里继续执行。然后我必须按“跳出”以返回到自己的代码。
有没有办法防止调试器打开STL源文件? 是否有黑名单或设置?我是使用原生C++代码。不幸的是,“只有我的代码”调试器设置仅适用于托管代码。
好问题,调试器不断跳进所有东西确实会在调试期间产生巨大的减速和干扰。幸运的是,有一个解决方案:
打开您的注册表编辑器,导航到
HKLM\SOFTWARE\Microsoft\VisualStudio\10.0\NativeDE\StepOver
如果您使用的是64位机器,在SOFTWARE后面添加\Wow6432Node,这在过去曾经让我头疼过。
添加一个新的字符串值(REG_SZ)。名称并不那么重要,我为了清晰度使用了NoSTL,将其值设为
std\:\:.*=NoStepInto
这告诉调试器不要进入与该正则表达式匹配的任何内容,因此它将跳过std命名空间中的每个函数(全局和类级别)。
通过使用StepInto
,您可以为特定方法添加覆盖,并且仍然可以使用断点。还可以方便地添加一些经常需要进入但您已经知道结果的自己的方法。
这里提供了更详细的解释,请在Google上搜索NoStepInto
以获取更分散的信息。
<Function><Name>std\:\:.*</Name><Action>NoStepInto</Action></Function>
- CorpseDeadC:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Packages\Debugger\Visualizers\default.natstepfilter
。更改会立即应用,无需重新启动IDE。 - Pascal T.