.NET:运行带有调试信息的程序

时间:2011-04-14 15:25:37

标签: .net debugging compiler-construction

众所周知,在“调试模式”(而不是“发布模式”)下编译程序可能会导致性能下降。

但有时候获得一些调试信息会很有用。例如,当我们的程序在生产服务器上运行并发生异常时,将有助于在异常时间记录堆栈跟踪。

我发现这是可能的,在“发布模式”下编译代码并将* .pdb文件与二进制文件放在同一文件夹中。

任何人都知道附加pdb文件是否会导致任何性能问题。

由于

3 个答案:

答案 0 :(得分:2)

它不应导致任何性能问题,因为DLL已在发布模式下编译。抛出异常时,.NET VM会了解堆栈跟踪的所有信息,包括抛出异常时堆栈的每个方法中正在运行的指令。包括pdb文件只是给它一种方法来将这些数据映射到实际的文件名和行号。

由于在堆栈跟踪中包含这些额外数据而导致的任何性能差异可能会因首先抛出异常的开销而相形见绌。

答案 1 :(得分:1)

  • 编译为发布模式+生成.pdb对性能没有影响
  • 将.pdb文件与dll放在一起以查找调试信息只有在异常时才会出现非常小的微小性能 - 这是可忽略不计。这将是从pdb映射中查找堆栈信息的开销。

答案 2 :(得分:0)

它不会对性能产生负面影响,但它确实会暴露您可能不需要的安全问题。调试符号对于在发生异常时捕获好的堆栈跟踪很有用,但它不应该是您的默认发布模式。