在Delphi中,编译器指令{$ d-}和{$ l-}允许您有效地避免为定义的代码部分生成调试和本地变量信息。

在实践上可以从调试视图中“隐藏”代码的效果,它不会出现在呼叫堆栈中,并且您在调试时不会介入。

有什么方法可以使用VS 2008在C#中获得相同的结果?

注意:原因是我们有一个稳定的框架,不需要调试,但往往会弄乱呼叫堆栈和标准调试流。

有帮助吗?

解决方案

我用 debuggernonusercodeattribute 因此,默认情况下,您不要突破或介入代码;但是,通过debuggerstepthrough对此的好处是,您可以转到“选项” - > debugger->仅我的代码设置,并允许打破/调试您标记的代码。如果您遇到问题,这对这有很大帮助。我通常在整个课程上使用它。

顺便说一句,呼叫堆栈将自动隐藏使用此属性标记的非用户代码:)当然,您可以右键单击“呼叫堆栈”窗口并切换“显示外部代码”即可隐藏/显示缺少的堆栈信息。

其他提示

我想你想要 DebuggerStepThrough 属性:

DebuggerStepThrough 指示调试器逐步浏览代码,而不是逐步进入代码。

[DebuggerStepThrough]
public void MyMethod()
{

}

这对于设置/获取器特别有用,因为调试通常只会添加噪声(示例MSDN):

public int Quantity
{ 
    [DebuggerStepThrough] 
    get { return ComplexLogicConvertedToMethod(); } 
    [DebuggerStepThrough]      
    set { this.quantity = value ; }
}

或跳过代码的特定部分:

... some production code
#if DEBUG
    Console.WriteLine("Debug version");
#endif
... some more production code
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top