【发布时间】:2011-01-06 19:10:34
【问题描述】:
我们正在使用 Fogbugz 来跟踪问题,我正在编写一个围绕 XML API for Fogbugz 的 C++ 包装器。
最佳做法似乎是使用“scout”字段,以便仅计算类似/相同的崩溃但不会再次报告。为此,我们需要一个用于特定崩溃原因的唯一字符串。
在 Win32 中 - 在获取 dmp 文件或其他崩溃处理程序之后,为崩溃创建唯一字符串的好方法是什么? (我们将创建一个 dmp 文件并将其发送到 fogbugz 服务器)
在之前的帖子/文章/等中,Joel 提出了各种建议,但其中大部分都依赖于像 C# 这样使用反射的语言,并且有很多难以获得或无法获得的信息。
有没有其他人得到了诸如堆栈跟踪或其他东西来在fogbugz中制作侦察条目?
编辑 澄清一下 - 我们不希望每个事件都有一个唯一的 ID - 可能存在具有相同代码路径的崩溃。我们想要捕捉到这一点。我在想我们会得到我们代码中的最后几个堆栈调用(不是来自 win32 DLL 的堆栈调用) - 但不知道如何去做。
报告每一次崩溃都是唯一的是不对的。报告同一案例下的所有崩溃是不对的。重复导致崩溃的场景的不同用户应映射到同一事件。
编辑
我认为我们想要的是崩溃的一般“签名” - 基于堆栈上的内容。类似的堆栈应该具有相同的签名。例如 - 采用我们应用程序中的前 5 个方法,然后我们将第一个调用(如果有)放入 MS DLL。这对于签名可能就足够了,并且可能会关联“相同”的崩溃。
那么如何获得堆栈中的方法列表呢?您如何判断它们是来自您自己的应用程序还是在另一个 DLL 中?
编辑 - 注意 我们想在异常处理程序中创建一个“bucket id”/签名,以便我们可以创建 minidump 并将其作为 scout 描述发送给fogbugz。或者,我们可以在应用程序下一次启动时加载转储,然后使用我们生成的签名发送它。
【问题讨论】:
标签: c++ windows fogbugz crash-dumps crash-reports