stacktrace信息在.NET发布模式构建中可用吗?

stacktrace信息在.NET发布模式构建中可用吗?,.net,debugging,stack-trace,debug-symbols,.net,Debugging,Stack Trace,Debug Symbols,如果我选择发布模式来构建dll,stacktrace信息是否仍然可用 如果是,那么在发布模式下哪些信息不可用?如果在异常上下文中引用堆栈跟踪,则是,堆栈跟踪信息在发布模式下仍然可用。在发布模式中丢失的是完整的调试符号,它为堆栈跟踪提供源代码序列点信息。这允许堆栈跟踪识别特定堆栈跟踪项引用的特定代码行 此外,在启用优化的发布模式下,代码可以内联,从而更改运行时代码的结构。虽然运行时版本代码显然更为优化,但它与实际编写的代码行的关系较小。您始终拥有堆栈跟踪信息——这是与生成模式无关的运行时功能——但

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


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

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


此外,在启用优化的发布模式下,代码可以内联,从而更改运行时代码的结构。虽然运行时版本代码显然更为优化,但它与实际编写的代码行的关系较小。

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

通过更改生成配置以创建完整的程序数据库(.pdb)文件,可以在发布生成堆栈跟踪(包括异常)中获取行号和源文件名。要在Visual Studio中执行此操作,请执行以下操作:

  • 打开项目的属性页
  • 选择发布配置
  • 转到“生成”选项卡,然后单击“高级”按钮
  • 在调试信息下拉列表中选择“完整”
  • 请注意,只有当.pdb文件与应用程序一起部署时,这才有帮助