c++ - 有没有办法自动避免进入 Visual Studio 中的某些功能?

标签 c++ visual-studio debugging

我知道“仅启用我的代码”调试选项,但这仅适用于托管代码。

我正在寻找一种无需单步执行函数调用的方法,例如,STL 字符串强制转换运算符,因为在函数的一个参数中存在从 char* 到字符串的隐式转换。

最佳答案

我找到了 blog entry有一个解决方案。虽然我更愿意说“不要介入不属于这个项目的任何事情”,但这看起来是可行的。

编辑:在查看了一些博客和新闻组之后,方法是在此注册表项下为您不想进入的每个功能添加一个条目(假设 VS 2005):

32 bit Windows
    \\HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\8.0\NativeDE\StepOver
64 bit Windows
    \\HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\VisualStudio\8.0\NativeDE\StepOver

路径的版本号:

Visual Studio 2005: 8.0
Visual Studio 2008: 9.0
Visual Studio 2010: 10.0
Visual Studio 2012: 11.0
Visual Studio 2013: 12.0

此键包含一组影响如何执行步进的规则。每个规则都被指定为一个单独的条目,其名称是一个十进制数,其值是一个函数名称模式,它指定我们想要影响哪些函数。例如

    "10" = "boost\:\:scoped_ptr.*\:\:.*=NoStepInto"

防止进入 boost::scoped_ptr 函数。

规则从高值到低值进行评估,直到找到匹配的模式,或者没有剩下的规则。在这种情况下,该函数被单步执行。

函数名是正则表达式。

冒号需要用反斜杠括起来。

您可以指定 StepInto 和 NoStepInto。这为您提供了一种避免进入同一作用域/命名空间中除少数几个函数之外的所有函数的方法。

重新启动 Visual Studio 以获取对注册表的更改。

关于c++ - 有没有办法自动避免进入 Visual Studio 中的某些功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/626744/

相关文章:

c++ - 在 C++ 中用作闭包的函数指针

sql-server - SSIS删除双引号内的单引号

c# - Visual C# 回溯 : how to know where [external code] resides?

java - 调试 JUnit 内部结构

c# - 需要 SQL Server 2012 Express LocalDB

c# - 为什么 .NET 会在路径中已经存在的斜线中添加一个额外的斜线?

c++ - 在函数声明之后声明一个整数有什么用?

c++ - 如何避免使用 Google Mock 的指针?

c++ - 如何创建支持 initializer_list 的 std::vector 子类?

visual-studio - 为什么在 VS2010 中关闭 Just My Code 后无法附加到 w3wp.exe 进程?