【问题标题】:Advantages and disadvantages of including PDB files with your release application在发布应用程序中包含 PDB 文件的优点和缺点
【发布时间】:2010-05-13 09:51:38
【问题描述】:

我有一个 VB.net 应用程序。目前,该应用程序的发布版本是在没有 PDB 文件的情况下生成的。这给了我错误日志,缺少有用的详细信息,例如行号。 我正在考虑将 PDB 文件包含在未来的构建中,但我想知道这样做的优缺点是什么(性能方面、大小方面、代码安全方面)

【问题讨论】:

  • 您到底想用 PDB 文件完成什么?除非你混淆代码,否则你已经有了很好的托管代码堆栈跟踪(而且我认为 PDB 无论如何都会使混淆变得无用......)。您获得的唯一优势是“隐藏”符号,例如局部变量和参数名称。
  • 德拉茨。我喜欢这个问题,但这里已经有人问过了:stackoverflow.com/questions/1307482/…
  • 参数名称和行号非常有用。我们的应用程序非常大,由几个不同的开发人员在几个不同版本的 VB 上构建。目前我们有堆栈中过程的名称,但如果有更多的数据会更好。

标签: .net vb.net debugging pdb-files


【解决方案1】:

我知道我会因此而被打败,但是......

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

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

因此,如果您处于类似情况,我建议您忘记官方立场(在这种情况下),继续发布 pdb 文件,并附上一个重要警告。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 我们尝试处理所有异常。所以我们不做事后调试。在处理异常时,我们将堆栈跟踪记录到数据库中
      • 事后调试在您没有抛出任何异常时也很有用,例如,如果您的应用程序挂起。您可以捕获挂起进程的迷你转储,然后使用 pdb 和源代码对其进行远程调试。
      【解决方案4】:

      我发现为发布版本构建调试信息也很有用 - 它有助于捕获错误。它不会使程序运行速度变慢。但是,如果您不希望其他人能够更轻松地对其进行逆向工程,则不应将 PDB 文件与您的应用程序一起提供。只给测试人员。

      【讨论】:

      • 该应用程序是一个内部应用程序。它只会在我们公司内部使用。用户限制阻止用户对我们的代码进行逆向工程
      猜你喜欢
      • 2014-01-10
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多