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

时间:2010-06-29 04:28:58

标签: .net debugging stack-trace debug-symbols

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

如果是这样,那么在发布模式下 的信息是什么?

2 个答案:

答案 0 :(得分:14)

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

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

  1. 打开项目的属性页
  2. 选择发布配置
  3. 转到“构建”选项卡,然后单击“高级”按钮
  4. 在“调试信息”下拉列表中选择“完整”。
  5. 请注意,这仅在.pdb文件与应用程序一起部署时才有用。

答案 1 :(得分:5)

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

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