【问题标题】:Why does a VS 2010 project compilation, generates pdb files, when building in Release and Debug mode?为什么在发布和调试模式下构建时,VS 2010 项目编译会生成 pdb 文件?
【发布时间】:2012-05-15 03:46:04
【问题描述】:

我正在发布模式下构建我的 VS 2010 的窗口服务 c# 项目。我第一次感到惊讶的机会是,即使在发布模式下,它也会创建 pdb 文件。附加调试过程后,我无法加载调试符号。

我的问题是,如果我们在调试和发布模式下都有 pdb 文件,那么为什么需要两种编译模式。

【问题讨论】:

  • 快速提问。什么类型的项目? .NET、C++?
  • 检查项目设置->构建->高级->高级构建设置->调试信息。我认为如果在发布模式下设置为 pdb-only,它会生成 pdb 文件。

标签: visual-studio visual-studio-2010 compilation


【解决方案1】:

我的问题是,如果我们在调试和发布模式下都有 pdb 文件,那么为什么需要两种编译模式

除了 PDB 生成之外,调试和发布之间存在差异其他。如果您进入 Build 属性并进入“Advanced”,则会生成不同级别的调试信息 - Full、PDB-only 和 None。

此外,还有不同级别的编译时优化,并且存在不同的预处理器符号(例如,每个 Debug.Assert 将存在或不存在)。

当然,您也可以拥有自己的各种构建配置,有多种选择。

【讨论】:

【解决方案2】:

出现debug/release模式的原因有很多,与PDB文件的创建无关。

VS 在发布模式下更快地执行您编译的程序。此外,如果您处于调试与发布模式,则有一些编译器指令可以改变程序的行为方式。例如,您可以使用编译器指令来禁用您的顶级 try catch 块,以便您可以隔离被抛出到特定代码行的异常。

这只是几个例子。简而言之,调试模式的用途远不止为您创建 PDB 文件。

【讨论】:

    【解决方案3】:

    您可以有两种以上的编译模式。通常,调试和发布意味着你是否想要优化。无论如何,您仍然可以生成调试信息,只有用于发布版本的 PDB 不会有太大帮助。内联函数,可以排除变量等

    【讨论】:

      【解决方案4】:

      我最近做了一个 winupdate(20120508),之后 Visual Studio 的调试似乎真的很慢 在 compile-to-runDebug 滞后后延迟 1 分钟,然后当调试程序退出时,再延迟 1 分钟 再次获得视觉工作室的控制权。我确实清理了所有东西,但没有任何乐趣。

      解决方案:我手动删除了项目/解决方案中的 *.sdf 和 *.suo 文件并重新构建。问题神奇地消失了。

      不知道为什么,但有些东西不同步、损坏或与更新不兼容,需要手动删除。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-24
        • 2010-10-09
        • 2011-10-07
        • 1970-01-01
        • 1970-01-01
        • 2013-01-21
        • 1970-01-01
        相关资源
        最近更新 更多