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

问题描述 投票:0回答:3

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

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

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

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

.net debugging
3个回答
2
投票

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

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


1
投票
  • 编译为release模式+生成.pdb对性能没有影响
  • 将 .pdb 文件与 dll 放在一起以查找调试信息,仅在出现异常时才会对性能造成很小的影响 - 这是“可以忽略不计”的。这将是从 pdb 映射查找堆栈信息的开销。

0
投票

© www.soinside.com 2019 - 2024. All rights reserved.