【问题标题】:What does setting up a symbol server give me?设置符号服务器能给我带来什么?
【发布时间】:2010-02-09 23:41:32
【问题描述】:

我阅读了这篇文章:Setting up a Symbol Server,其中详细介绍了如何为我的团队设置共享符号服务器。

我想知道的是将我自己的符号添加到商店中。

我的问题是:我究竟从中获得了什么?

假设我有以下构建过程:

  1. 我将更改提交到我的 Subversion 存储库中
  2. TeamCity CI 工具获取这些更改并进行构建 + 单元测试
  3. 二进制文件被提交到不同的 Subversion 存储库(供我制作的应用程序引用)

如果我添加到上面的第三点,将构建文件添加到符号存储中的能力,这给了我什么?

如果我创建一个程序并引用提交到存储库的二进制文件,我会同时获得 .dll、.pdb 和 .xml(智能感知支持),因此我的堆栈跟踪似乎已经包含了我需要的一切。

这是分发 .pdb 的替代品吗?

或者只是当我需要在 WINDBG 中打开一个 .DMP 文件并分析它的堆栈时,我可能根本没有可执行文件,只有其他人提供的 .DMP 文件? (也就是说,可执行文件可能来自旧版本,我只得到了 .DMP 文件)

【问题讨论】:

    标签: .net symbol-server


    【解决方案1】:

    不是很明显:符号服务器为您提供符号。因此,当您的代码崩溃和烧毁时,您可以调试从客户那里获得的小型转储。对客户遇到的真实问题进行事后分析绝对至关重要。因为当您几个月前的代码版本有机会在客户的机器上崩溃时,您已经完成了几个版本。

    真正的努力不是设置符号服务器,而是确保它具有正确的 pdb 文件,以便为您提供良好的调试机会。控制构建过程是该等式的关键部分。

    【讨论】:

    • 我想这就是我的答案。对于我的团队、我们的测试人员和用户来说,正常的崩溃报告已经包含了我们需要的所有内容,但最近我一直在使用 WINDBG 研究一些高内存使用问题,如果我从我们的客户那里得到一个转储文件不止一个中间版本,我不会在本地保存文件。这意味着这是我可以使用符号服务器的区域。
    【解决方案2】:

    如果您的用户可能会发现代码存在问题但无法访问您的 Subversion 存储库,您将如何为他们获取所需的符号?例如,如果您正在为会计部门开发一个应用程序并希望他们试用代码的早期版本,您知道可能会追溯他们,您是否需要他们有一个 Subversion 登记员?

    符号服务器只是一个单一的网络位置,符号可供任何可能需要它们的人随时使用。

    如果您需要符号信息,除了 .pdb 文件别无选择。

    【讨论】:

    • 为了在我们的支持工具中获得有用的堆栈跟踪,我们已经在我们的应用程序中分发了 .pdb 文件。因此我的问题。基本上,对于每个 .dll(我们自己构建的),我们还发布了相应的 .pdb 文件。我们通过内置的崩溃报告功能发送的堆栈跟踪已经包含文件和行号信息。这是否意味着在这种情况下,这个符号服务器真的没有用处?如果程序在测试机器上崩溃,我将如何从该服务器获取不属于我们的库的符号?文章没说。
    • 我想说,在您描述的情况下,符号共享是不必要的。符号服务器的最大优点是 (1) 最小化包含在分发中的文件数量/分发的大小和 (2) 为符号文件创建规范位置(您不必跟踪版本控制)。听起来您正在以其他方式处理这些问题。
    【解决方案3】:

    看看这篇博文:Source Server and Symbol Server Support in TFS 2010

    它专门针对 TFS 2010 中的符号服务器和源服务器功能,但您也可以获取大量信息并将其应用于其他构建和源代码控制系统。

    【讨论】:

      猜你喜欢
      • 2015-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-12
      • 1970-01-01
      • 2015-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多