【问题标题】:How can I migrate from a Microsoft Symbol Server to Google Breakpad?如何从 Microsoft Symbol Server 迁移到 Google Breakpad?
【发布时间】:2015-10-11 09:07:45
【问题描述】:

我们的产品会生成minidump files,以防出现问题。我们运行symbol server 来存储和访问我们构建的调试符号,以便我们从转储文件中获得正确的堆栈跟踪。

由于我们的产品还可以在其他操作系统(特别是 Linux 和 OS X)上运行,我们开始关注Google breakpad。我似乎也使用小型转储和 PDB 文件进行存储。但是,我想知道:

(如何)我可以将现有的符号服务器迁移到 Google breakpad,这样我就不会丢失所有现有的符号?我想其他人已经采取了同样的行动,也许有一些共同的方法?

【问题讨论】:

    标签: debug-symbols google-breakpad symstore


    【解决方案1】:

    你有几个选择:

    1. run dump_syms(这是一个将 pdb 处理成基于文本的工具 breakpad 的 .sym 格式,带有 breakpad)在所有 pdb 上已经在 服务器,然后将它们上传到您的breakpad服务器(有一个 几个选项,我们使用 socorro)。你还需要继续跑步 它在您关心的构建的所有新符号上。

    2. 从服务器请求符号,因为 stack_walker 在处理传入的崩溃时需要它们(我们还没有这样做)

    3. 定期查找上次崩溃次数中丢失的符号,查看它们是否在符号服务器上,通过 dump_syms 运行它们, 将 .syms 上传到您的崩溃服务器,然后将崩溃发送到重新处理。

    您需要访问 MS 符号服务器以获取系统符号,因此您必须为此实现稍后的选项之一。

    我们为系统符号选择了选项 3,但实施很大程度上取决于所使用的崩溃服务器(我们使用的是 socorro crash-stats,不是推荐的配置)。 MS符号服务器集成有多种python实现。从 stack_walker 你会知道符号的名称和 GUID,所以你可以忽略 PE 解析部分。

    需要注意的一个问题:OSX 上没有符号服务器的概念,并且 breakpad 崩溃转储在那里毫无用处。要从 OSX 崩溃重建堆栈跟踪,您将需要访问原始系统二进制文件(通过 dump_syms 运行它们)。这可能并不总是可能的。您将需要手动构建 OSX 符号存储库,另请参阅:https://wiki.mozilla.org/Breakpad:Symbols

    Catch #2:Windows 使用不区分大小写的 FS(令人惊讶),有时生成的 pdb 会被链接器无缘无故地小写(而使用它的 PE 二进制文件仍然引用正确的大小写)。如果您的崩溃服务器在 *nix 机器上运行,这会让人头疼。考虑从 PE 二进制文件本身中提取符号名称,而不是在这种情况下依赖 pdb 文件名。

    Catch #3:您仍然需要运行符号服务器来调试 breakpad 上传的转储文件(以防堆栈跟踪不够,并且您想在 Visual Studio 中打开转储)。 BP 使用符号服务器,而不是替换它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-30
      • 2019-05-16
      • 2011-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      相关资源
      最近更新 更多