c# - 我应该使用调试信息编译发布版本 "full"或 "pdb-only"吗?

在 C# 项目的 Visual Studio 中,如果您转到项目属性 > 构建 > 高级 > 调试信息,您有三个选项:nonefullpdb-only.

哪种设置最适合发布版本?


那么,fullpdb-only 有什么区别?

如果我使用 full 会有性能影响吗?如果我使用 pdb-only 会更难调试生产问题吗?

最佳答案

我会使用 pdb-only 构建。您将无法将调试器附加到已发布的产品,但如果您遇到故障转储,您可以使用 Visual Studio 或 WinDBG检查崩溃时的堆栈跟踪和内存转储。

如果您使用 full 而不是 pdb-only,您将获得相同的好处,除了可执行文件可以直接附加到调试器。您需要根据您的产品和客户确定这是否合理。

确保将 PDB 文件保存在某个地方,以便在收到崩溃报告时可以引用它们。如果您可以设置 symbol server存储那些调试符号,这样更好。

如果您选择使用 none 进行构建,那么当现场发生崩溃时,您将无法追索。您将无法对事故进行任何形式的事后检查,这可能会严重影响您追查问题的能力。

关于性能的说明:

两者John Robbins和 Eric Lippert写过关于 /debug 标志的博文,他们都表示此设置对性能的影响。有一个单独的 /optimize 标志,指示编译器是否应该执行优化。

关于c# - 我应该使用调试信息编译发布版本 "full"或 "pdb-only"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7713514/

相关文章:

git - sbt 如何从 git 中提取依赖项?

.net - NuGet 自动包还原不适用于 MSBuild

angular - node_modules/rxjs/internal/types.d.ts(81

windows-7 - 如何解决 Nant 0.91 的配置错误?

build - 去构建 : "Cannot find package" (even though G

build - 什么是构建工具?

visual-studio - Visual Studio 2015 项目构建失败但没有错误

c# - 调试未启动

shell - 在 Jenkins 中,Execute Shell 如何/何时将构建标记为失败?

android - 任务 'app:mergeDebugResources' Crunching C