SO上有一些相关的问题-但还没有找到答案-
我想生成一个“签名”/bucket id 来向我们的问题跟踪系统报告小型转储/崩溃。由于 MS 已经使用“bucket ids”做到了这一点,我想我可以重新使用他们的 bucket/signature 生成。
我可以从顶级过滤器或过滤器内部的 _EXCEPTION_POINTERS 对象或 _MINIDUMP_EXCEPTION_INFORMATION 结构或小型转储本身获取该 ID 吗?
这是一个 C++ 应用程序。
SO上有一些相关的问题-但还没有找到答案-
我想生成一个“签名”/bucket id 来向我们的问题跟踪系统报告小型转储/崩溃。由于 MS 已经使用“bucket ids”做到了这一点,我想我可以重新使用他们的 bucket/signature 生成。
我可以从顶级过滤器或过滤器内部的 _EXCEPTION_POINTERS 对象或 _MINIDUMP_EXCEPTION_INFORMATION 结构或小型转储本身获取该 ID 吗?
这是一个 C++ 应用程序。
有一篇论文首先讨论了微软人如何创建存储桶 ID(是的,当然,这篇论文来自微软)。您实际上并不需要对他们使用的完全相同的分桶算法进行逆向工程。这是行之有效的想法。
该论文可在http://www.sigops.org/sosp/sosp09/papers/glerum-sosp09.pdf找到, 因为这是 SIGOPS 论文,所以他们还做了一张幻灯片:http ://www.sigops.org/sosp /sosp09/slides/glerum-slides-sosp09.pdf
不确定您需要哪个存储桶 ID。数字 id 由服务器分配,您可以在发送报告后通过查看事件日志找到它。在应用程序事件日志中查找事件 ID 1001。
要以字符串格式查找存储桶 ID,请使用 windbg 或 cdb 并使用 !analyze 命令。
请注意,出于实际分桶的目的,您可能希望查看 WATSON_STAGEONE_URL 而不是 BUCKET_ID。