是否在.NET发布模式下可用堆栈跟踪信息?

Ric*_*cky 5 .net debugging stack-trace debug-symbols

如果我选择发布模式来构建一个dll,堆栈跟踪信息是否仍然可用?

如果是这样,那么什么样的信息在释放模式不可用?

Ben*_*n M 14

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

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

  1. 打开项目的属性页面
  2. 选择发布配置
  3. 转到"构建"选项卡,然后单击"高级"按钮
  4. 在Debug Info下拉列表中选择"full".

请注意,这仅在.pdb文件与应用程序一起部署时才有用.


jri*_*sta 5

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

此外,在启用了优化的发布模式下,可以内联代码,从而更改运行时代码的结构.虽然肯定更优化,但运行时发布代码与实际编写的代码行之间的关系较少.