如何在VS 2008中进行逐步调试时跳过常见类?

16

如何在VS 2008调试器中跳过常见类的调试步骤?

比如,我不想调试器进入任何std::类中。我该怎么做?

我找到了在VS 2005及更早版本中实现此功能的方法,但在VS 2008中未找到。

2个回答

17
你可以通过输入注册表条目来实现这一点(我知道,这很烦人)。你要查找的键因32位和64位系统而异。对于32位系统,键是:

HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\NativeDE\StepOver

如果您正在运行64位操作系统和32位Visual Studio,则关键是:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\9.0\NativeDE\StepOver

Wow6432Node密钥是64位系统上运行的32位应用程序所需的密钥。 (附注:在注册表中搜索“_RTC_CheckEsp”可能会把你带到正确的位置,这是Visual Studio 9中的默认条目)

语法对你来说应该很熟悉,但作为示例,一个简单的条目可以是字符串值boost::.*=NoStepInto,这将避免调试器进入Boost。查看http://www.cprogramming.com/debugging/visual-studio-msvc-debugging-NoStepInto.html获取其他示例。

希望这能帮助你 :)


1
谢谢,这正是所需的。使用 std::.*=NoStepInto 跳过所有 STL 的东西 :-) - BarsMonster
2
非常有用...在VS2010中也适用(使用VisualStudio\10.0\NativeDE) 我真的认为这个答案被低估了... :) - Hertzel Guinness
+1 非常感谢!我找到了另一个描述,但它并没有起作用,我需要“Wow6432Node”... - Philip Daubmeier
1
谢谢!适用于Visual Studio 2010,但不适用于Visual Studio 2013。要使其在vs2010中工作,您需要将所有的_RTC_CheckEsp更改为std::.*=NoStepInto(每个已安装的Visual Studio都有一个或两个),或者在注册表路径中将9.0更改为10.0。 - Mohamed ElNakeep

0

来自http://www.highprogrammer.com/alan/windev/visualstudio.html:

避免步入函数

通常有必要避免步入一些常见的代码,如构造函数或重载的运算符。autoexp.dat提供了这种功能。添加一个名为“[ExecutionControl]”的部分。添加键,其中键是函数名称,值是“NoStepInto”。您可以在命名空间或类的第一组冒号之前指定星号(*)作为通配符。

autoexp.dat仅在Visual Studio启动时读取。

要忽略名为myfunctionname的函数以及对CFoo类的所有调用:

[ExecutionControl]
myfunctionname=NoStepInto
CFoo::*=NoStepInto

为了忽略MFC CStrings的构造和赋值操作:(注意CString :: operator =中的额外=。)

[ExecutionControl]
CString::CString=NoStepInto
CString::operator==NoStepInto

忽略所有 ATL 调用:
[ExecutionControl]
ATL::*=NoStepInto 

每次调试器启动时都会解析autoexp.dat。 - Nikola Smiljanić
1
我看过这个页面,刚刚又试了一下。它不起作用,以下是我发现的内容:以前,要实现这个功能,需要在autoexp.dat中使用[ExecutionControl]部分,似乎人们普遍认为这仍然有效。然而,自2003年以来(!),这些设置的主页就是注册表。但我没有看到相关的注册表键,没有类似于2005年的HKLM\Software\Microsoft\VisualStudio\8.0\NativeDE\StepOver :-S - BarsMonster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接