阻止调试器进入函数
Block debugger to step into functions
我正在寻找一种方法来阻止Visual Studio调试器在按F11时进入某些类和函数。或者阻止一些文件,这样IDE就不会打开它们,只需逐步通过(除非出现异常)
我知道这听起来有点愚蠢,但我使用的是智能指针和其他辅助类,许多重载运算符,简单的表达式由许多函数调用组成,这些函数调用在优化时会消失,所以这不是速度问题,而是调试问题,总是打开和关闭那么多文件,执行许多函数,不小心留下目标代码等等。
这里有一个例子,我说的是:
stepToThisFunction(objectOfIgnoreClass->ignoreFunction());
当调试器在此行上时,按F11应只输入stepToThisFunction
,逐步执行ignoreFunction()
或可能从objectOfIgnoreClass
调用任何函数。
托管DebuggerStepThrough
的一些本机等价物。我不想使用CLI。只是在函数/类之前编写的关键字或宏。我还发现了一些东西,一些注册表项修改,但这似乎不是我想要的,或者我不了解它的机制(我甚至不知道注册表项与此有什么关系)。此外,"放置断点"answers"运行到游标"是不可接受的解决方案。
我有一个宏可以精确地做到这一点。它不是很快,但很有用(事实上,我也把它转换成了C#,所以我可以在AddIn中使用它,这要快得多)。只需使用您想要忽略并绑定到F11或您选择的另一个密钥的函数自定义regexp:
Sub StepIntoNextRealFunction()
DTE.Debugger.StepInto(True)
Dim frame As EnvDTE.StackFrame = DTE.Debugger.CurrentStackFrame
Dim fn As String = frame.FunctionName
Dim skipRE As Regex = New Regex("operator.*->|MyString::MyString|operator new|operator.**|ignoreFunction")
If (skipRE.Match(fn).Success) Then
DTE.Debugger.StepOut(True)
DTE.Debugger.StepInto(True)
End If
End Sub
编辑:这是一个C#版本-你需要创建一个插件,然后连接到DTE对象:
public void StepIntoNextRealFunction(DTE2 dte)
{
Debugger2 debugger=(Debugger2)dte.Debugger;
debugger.StepInto(true);
while (true) {
EnvDTE.StackFrame frame = debugger.CurrentStackFrame;
string fn = frame.FunctionName;
Regex skipRE = new Regex("operator.*->|basic_string.*basic_string");
if ((skipRE.Match(fn).Success)) {
debugger.StepOut(true);
debugger.StepInto(true);
} else {
break;
}
}
}
右键单击行并选择"Step into specific"。然后选择您想要的功能。
Visual Studio中有一个不受支持的功能,允许您永久配置调试器,使其不介入某些函数。详细信息在MSDN的博客文章中给出:
http://blogs.msdn.com/b/andypennell/archive/2004/02/06/69004.aspx
- 正在VS调试器中监视映射条目
- C++setiosflags函数操纵器-未确定的缩进
- 将函数包装器转换为 std::function
- 使用向量的函数崩溃,调试器说访问冲突读取位置
- 函数无法正常工作,调试器没有帮助
- Qtcpserver 仅在调试器下在侦听函数上返回未知错误
- Xcode 7调试器不会中断内联标头函数
- 如何向调试器隐藏变量/函数名
- 当函数通过异常离开时C++闯入调试器
- 函数调用会导致C++程序冻结,除非在调试器中逐步执行
- 对于隐式定义的构造函数/析构函数,如何通过调试器检查值
- 我可以在#define函数中使用Visual Studio调试器吗?
- VS2008|:任务管理器和CRT堆调试器函数之间的内存使用差异
- VS2008 c++调试器似乎无法/不愿意查看函数中定义的结构的内部实例.人们是如何调试这些代码的?
- 跟踪Visual Studio / Nice调试器中所有函数的方法
- Visual C++SSE函数在没有调试器的情况下启动时速度较慢
- 有没有一种方法可以从Xcode调试器的调用堆栈中删除内联函数
- 阻止调试器进入函数
- 从调试器中调用未使用的函数
- 基于Google v8函数的调试器API