在Delphi中,编译器指令{$d-}和{$l-}允许您有效地避免为已定义的代码段生成调试和局部变量信息。
在实际情况中,如果代码可以从调试视图中“隐藏”出来,那么它就不会出现在调用堆栈中,并且您也不会在调试时进入它。
有没有办法在使用VS2008的c#中达到同样的效果?
注意:原因是我们有一个稳定的框架,它不需要调试,但容易与调用堆栈和标准调试流程打乱。
发布于 2011-01-18 00:59:47
我使用DebuggerNonUserCodeAttribute,这样在默认情况下您不会中断或单步执行代码;但是,通过DebuggerStepThrough这样做的好处是,您可以转到选项->调试器->仅我的代码设置,并允许中断/调试您标记的代码。如果你有问题,这会有很大帮助。我通常在整个类上使用它。
顺便说一句,调用堆栈将自动隐藏使用此属性标记的非用户代码:)当然,您只需右键单击调用堆栈窗口并切换“显示外部代码”,即可隐藏/显示缺少的堆栈信息。
发布于 2011-01-18 00:52:53
我认为您需要DebuggerStepThrough属性:
DebuggerStepThrough指示调试器单步执行代码,而不是单步执行代码。
[DebuggerStepThrough]
public void MyMethod()
{
}这对于setter/getter特别有用,因为调试到setter/getter通常只会增加噪声(例如msdn):
public int Quantity
{
[DebuggerStepThrough]
get { return ComplexLogicConvertedToMethod(); }
[DebuggerStepThrough]
set { this.quantity = value ; }
}发布于 2011-01-18 01:02:37
或者跳过代码的特定部分:
... some production code
#if DEBUG
Console.WriteLine("Debug version");
#endif
... some more production codehttps://stackoverflow.com/questions/4715625
复制相似问题