警告 / debug开关的
MSDN 文档(在Visual Studio中为“调试信息”)似乎已过期!这是它有什么不正确
如果使用/调试:满,要知道,没有对速度和JIT优化代码的大小和与/调试代码质量的影响不大一定的影响:满。我们建议/ debug:pdbonly或不使用PDB来生成发行代码。
/ debug:pdbonly和/ debug:full之间的区别是,使用/ debug:full时,编译器会发出一个DebuggableAttribute
,用于告诉JIT编译器调试信息可用。
那现在是真的
- 仅Pdb –在.NET 2.0之前,它有助于调查已发布产品(客户计算机)的故障转储。但这并不允许附加调试器。.NET 2.0并非如此。它与Full 完全相同。
- 完整 –这有助于我们调查崩溃转储,还允许我们附加调试器以发布构建。但是与MSDN所提到的不同,它不会影响性能(自.NET 2.0起)。它与仅Pdb完全相同。
如果它们完全相同,为什么我们有这些选择?John Robbins(Windows调试之神)发现这些是出于历史原因。
在.NET 1.0中,存在差异,但在.NET 2.0中没有差异。看起来.NET 4.0将遵循相同的模式。与CLR调试团队仔细检查后,完全没有区别。
控制JITter是否执行调试构建的是/ optimize开关。<...>
最重要的是,您要使用/ optimize +和任何/ debug开关来构建发行版本,以便可以使用源代码进行调试。
然后他继续证明这一点。
现在,优化是一个单独开关的一部分/optimize
(在Visual Studio中称为Optimize code
)。
简而言之,无论DebugInfo设置为pdb-only还是full,我们都将得到相同的结果。建议避免使用“ 无”,因为它会使您无法分析已发布产品或附加调试器的故障转储。