我们正在使用 Fogbugz 来跟踪问题,我正在为 XML API for Fogbugz 编写一个 C++ 包装器。 .
最佳实践似乎是使用“scout”字段,这样类似/相同的崩溃只会被计算在内,而不会再次报告。为此,我们需要一个针对特定崩溃原因的唯一字符串。
在 Win32 中 - 在获得 dmp 文件或其他崩溃处理程序后,什么是为崩溃创建唯一字符串的好方法? (我们将创建一个 dmp 文件并将其发送到 fogbugz 服务器)
在以前的帖子/文章/等中,Joel 提出了各种建议,但其中大部分都依赖于 C# 这样使用反射的语言,并且包含很多难以获取或无法获取的信息。
有没有其他人得到堆栈跟踪或其他东西来在 fogbugz 中制作侦察条目?
编辑 澄清一下——我们不希望每个事件都有一个唯一的 ID——可能有具有相同代码路径的崩溃。我们想捕获这一点。我在想我们会得到我们代码中的最后几个堆栈调用(不是来自 win32 DLL 的调用)——但不确定如何去做。
将每次崩溃都报告为独一无二的是不正确的。在同一案例下报告所有崩溃是不正确的。重复导致崩溃的场景的不同用户应该映射到同一事件。
编辑
我认为我们想要的是崩溃的一般“特征”——基于堆栈中的内容。相似的堆栈应具有相同的签名。例如 - 采用我们应用程序中的前 5 个方法,然后我们对 MS DLL 进行的第一次调用(如果有)。这对于签名来说可能就足够了,并且可能会关联“相同”的崩溃。
那么如何获取栈上的方法列表呢?您如何判断它们是来自您自己的应用程序还是来自另一个 DLL?
编辑 - 注意 我们想在异常处理程序中创建一个“bucket id”/签名,这样我们就可以创建小型转储并将其作为侦察描述发送给 fogbugz。或者,我们可以在应用程序下次启动时加载转储,然后使用我们生成的签名发送它。
最佳答案
在我的项目中,我使用崩溃的地址内存作为“唯一”ID。
关于c++ - 创建一个反射(reflect)崩溃原因的崩溃报告 Win32 C++ 字符串的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4618765/