.NET 发布模式构建中是不是提供堆栈跟踪信息?

Posted

技术标签:

【中文标题】.NET 发布模式构建中是不是提供堆栈跟踪信息?【英文标题】:Is stacktrace information available in .NET release mode build?.NET 发布模式构建中是否提供堆栈跟踪信息? 【发布时间】:2010-06-29 04:28:58 【问题描述】:

如果我选择发布模式来构建 dll,stacktrace 信息是否仍然可用?

如果是,那么在发布模式下有哪些信息不可用?

【问题讨论】:

【参考方案1】:

您始终拥有堆栈跟踪信息 - 这是与构建模式无关的运行时功能 - 但行号和源文件名通常在发布构建堆栈跟踪中不可用。

您可以通过更改构建配置来创建完整的程序数据库 (.pdb) 文件,从而在发布构建堆栈跟踪(包括异常)中获取行号和源文件名。在 Visual Studio 中这样做:

    打开项目的属性页 选择发布配置 转到“构建”选项卡,然后单击“高级”按钮 在“调试信息”下拉菜单中选择“完整”。

请注意,这只有在 .pdb 文件与您的应用程序一起部署时才有帮助。

【讨论】:

【参考方案2】:

如果您指的是异常上下文中的堆栈跟踪,那么是的,堆栈跟踪信息在发布模式下仍然可用。您在发布模式中丢失的是完整的调试符号,它为堆栈跟踪提供源代码序列点信息。这允许堆栈跟踪识别特定堆栈跟踪条目所引用的特定代码行。

此外,在启用优化的发布模式下,代码可能会被内联,从而改变运行时代码的结构。虽然绝对更优化,但运行时发布代码与实际编写的代码行的关系较小。

【讨论】:

以上是关于.NET 发布模式构建中是不是提供堆栈跟踪信息?的主要内容,如果未能解决你的问题,请参考以下文章

从 C# 打印堆栈跟踪信息

有啥方法可以在 Sql Profiler 或类似工具中获取 .net 堆栈跟踪?

如何在 asp.net 核心中正确格式化堆栈跟踪信息

如何从像 Asp.Net 这样的堆栈跟踪中获取“源错误”?

在堆栈跟踪中获取 VB.NET 行号

提供了无效的请求URI。 (堆栈跟踪中没有有用的信息)