首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >避免对c#中的代码段进行调试和调用堆栈

避免对c#中的代码段进行调试和调用堆栈
EN

Stack Overflow用户
提问于 2011-01-18 00:49:05
回答 3查看 522关注 0票数 4

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

在实际情况中,如果代码可以从调试视图中“隐藏”出来,那么它就不会出现在调用堆栈中,并且您也不会在调试时进入它。

有没有办法在使用VS2008的c#中达到同样的效果?

注意:原因是我们有一个稳定的框架,它不需要调试,但容易与调用堆栈和标准调试流程打乱。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-18 00:59:47

我使用DebuggerNonUserCodeAttribute,这样在默认情况下您不会中断或单步执行代码;但是,通过DebuggerStepThrough这样做的好处是,您可以转到选项->调试器->仅我的代码设置,并允许中断/调试您标记的代码。如果你有问题,这会有很大帮助。我通常在整个类上使用它。

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

票数 6
EN

Stack Overflow用户

发布于 2011-01-18 00:52:53

我认为您需要DebuggerStepThrough属性:

DebuggerStepThrough指示调试器单步执行代码,而不是单步执行代码。

代码语言:javascript
运行
复制
[DebuggerStepThrough]
public void MyMethod()
{

}

这对于setter/getter特别有用,因为调试到setter/getter通常只会增加噪声(例如msdn):

代码语言:javascript
运行
复制
public int Quantity
{ 
    [DebuggerStepThrough] 
    get { return ComplexLogicConvertedToMethod(); } 
    [DebuggerStepThrough]      
    set { this.quantity = value ; }
}
票数 3
EN

Stack Overflow用户

发布于 2011-01-18 01:02:37

或者跳过代码的特定部分:

代码语言:javascript
运行
复制
... some production code
#if DEBUG
    Console.WriteLine("Debug version");
#endif
... some more production code
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4715625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档