在MSVC ++ 2010中逐步调试期间自动跳过STL功能

时间:2011-03-17 02:59:43

标签: visual-studio visual-studio-2010 debugging

我经常通过一个程序逐步调试。我通常总是使用“步入”按钮来停止我正在调试的部分中的每一行,当我认为我得到当前行时,只需再次单击。

然而,真正破坏这种工作流程的是库调用。如果有字符串长度计算或地图存储或类似的东西,调试器将跳转到某个STL文件并继续。然后我必须按“跳出”跳回我正在看的程序。

这意味着:我从我真正感兴趣的文档中被中断,首先是因为代码突然消失并且显示了STL源,其次是因为我必须查看按钮栏并移动鼠标,以及何时我跳了回来,我常常有些困惑。

有没有办法阻止调试器打开STL源文件?某种黑名单,或者甚至更优雅,有些设置在某个地方?到目前为止,我找到了“仅我的代码”设置,但它仅适用于托管代码,我使用本机代码。

3 个答案:

答案 0 :(得分:12)

好的问题,调试器不断跳入所有内容确实是一个巨大的减速和调试期间的分心。幸运的是有一个解决方案:

打开注册表编辑器,导航到

HKLM\SOFTWARE\Microsoft\VisualStudio\10.0\NativeDE\StepOver

(如果您使用的是64位计算机,请在软件之后添加\ Wow6432Node,这让我头疼不已。)

添加新的字符串值(REG_SZ)。名称不是那么重要,为了清楚起见,我使用了 NoSTL 并将其值设置为

std\:\:.*=NoStepInto

这告诉调试器不要进入与正则表达式匹配的任何内容,因此它将跳过std命名空间中的每个函数(全局和类级别)。 通过使用StepInto,您可以为特定方法添加替代,并且您仍然可以使用断点。添加一些自己经常进入的方法也很方便,但是你知道结果是由头脑。

Here是一个更详细的解释,谷歌在NoStepInto上有更多分散的信息。

答案 1 :(得分:1)

答案如上所述,但如果您使用VisualStudio 2017或者它不适合您,请尝试以下操作:

C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ Packages \ Debugger \ Visualizers

使用记事本或您拥有的任何内容打开以下文件:

  

default.natjmc

并添加以下行: <Function><Name>std\:\:.*</Name><Action>NoStepInto</Action></Function> 这个名字&#39;表示该文件中的注册表项的值和&#39; action&#39;是不言自明的。

如果你想添加注册表项,(不确定是否有必要),那么你会在这里找到它: \HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VSTA\8.0\NativeDE\StepOver 至少,这是我的道路。花了一个小时才发现这些,所以我希望它会对某人有所帮助。 删除&#39; Wow6432Node&#39;如果您有32位机器,如上所述。

答案 2 :(得分:-1)

你不使用F10 / F11 / Shift + F11 ???那些是“跨越”,“步入”,“走出去”,还有更多有用的东西。比寻找按钮更有用,你永远不必把目光从源代码上移开。

一般来说,使用Visual Studio中的键盘快捷键而不是鼠标可以很好地满足您的需求。不只是调试,而是一切。学习他们,你会爱他们的!你可能无法一次性学习它们,只需选择一些经常使用的函数,习惯它们,然后从另一组开始。随着时间的推移,它成为第二天性。

很抱歉这是偏离主题的,但你原来的问题已经被上一张海报很好地回答了,我想我会帮助别的东西:)