代码之家  ›  专栏  ›  技术社区  ›  zeocrash

在发布应用程序中包含PDB文件的优点和缺点

  •  10
  • zeocrash  · 技术社区  · 14 年前

    我有一个vb.net应用程序。目前,应用程序的发布版本是在没有PDB文件的情况下生成的。这给了我错误日志,缺少有用的细节,如行号。 我正在考虑将PDB文件包含在将来的版本中,但我想知道这有哪些优点和缺点(性能方面、大小方面、代码安全方面)

    4 回复  |  直到 14 年前
        1
  •  11
  •   Dave Markle    14 年前

    当您为应用程序部署调试符号时,很容易有人来对您的工作进行逆向工程,有些人认为这是不可取的。同样,您必须部署更多的文件,并且您的可部署项目会变得更大。PDB文件本身不会导致应用程序变慢,因为传送PDB并不总是排除放弃优化(您只需小心——默认的“调试”项目设置在生成PDB时往往不会优化输出)。

        2
  •  13
  •   David    14 年前

    我知道我会为此挨打,但是…

    我同意DaveMarkle的观点,但我想补充一点,发布PDB文件的好处是,正如您所说,非常适合调试。

    也就是说,我不卖软件,我写的代码都是公司内部使用的。在这种情况下,我不认为将调试代码和PDB文件一起投入生产会有什么问题。我从未见过性能受到影响,而且老实说,如果我们的用户遇到未处理的异常,他们很少给我们正确的信息。当然,我们试图正确地处理异常,但正如您所知,错误会发生。我们的策略是向所有项目添加一个全局异常处理程序,并将这些事件记录到数据库中。这些错误包含行号,因为我们确实包含调试文件,因此,我们能够快速识别和响应错误代码,修复错误代码,并获得更多无缺陷应用程序。对我(以及我们的用户)来说,这是一个巨大的好处,我不想没有它。

    因此,如果您处于类似的情况下,我建议您忘记官方立场(在本例中),继续发布PDB文件,其中有一个重要的警告。

    请确保使用PDB文件部署的任何Web应用程序,完全确保正确处理所有异常,并且不会无意中在标准ASP.NET错误页中暴露代码行。

        3
  •  2
  •   Polyfun MicBehrens    14 年前

    为您的发布版本创建PDB,但不要发送它们。使用匹配的构建和源代码将PDB保存在安全的地方。如果发生实时崩溃或类似情况,可以使用PDB进行宰后调试,方法是 Debugging Tools for Windows 或Visual Studio。

        4
  •  0
  •   darklon    14 年前

    我发现为发布版本构建调试信息也很有用——这有助于捕获错误。它不会使程序运行较慢。但是,如果您不希望其他人能够更容易地对PDB文件进行反向工程,那么您不应该将其与应用程序一起发送。只给测试人员。