6

我对开发人员在可以嵌入到 minidump 中的用户流数据结构中放入哪些有用的东西感兴趣。MSDN 将 MiniDumpWriteDump 的参数描述为:

PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam

并如此描述参数:

UserStreamParam [in] 指向 MINIDUMP_USER_STREAM_INFORMATION 结构数组的指针。如果此参数的值为 NULL,则 minidump 文件中不包含用户定义的信息。

我正在考虑将程序的最后n行日志嵌入到用户流中,因为测试人员往往不会一直发送带有所有错误的格式正确的日志。

此外,我可以将硬件规格(内存、CPU、视频等)放在该部分中。

人们还使用用户流细分做什么?

4

3 回答 3

3

我喜欢你包含历史日志信息的想法。但是,如果生成小型转储以响应某种类型的异常,则停止读取要包含在转储中的日志文件似乎并不总是最好的计划,因为系统的稳定性可能存在问题。

我们的默认类型是 MiniDumpWithFullMemory。在这种情况下,用户流信息在我们的应用程序中似乎不是特别有用,因为完整的内存包含了我们需要的几乎所有可能的信息(至少到目前为止)。当人们向我们发送转储文件时,我们也很幸运能够获取所有错误日志文件。

但是,我们的用户可以使用配置参数更改类型。我可以看到,对于较小的 minidump 类型之一,用户流信息可能非常有用。在看到这篇文章之前,我从未真正考虑过 minidump 函数的参数。我们在内存中有一些带有基本配置信息的结构,在没有生成完整内存转储的情况下这些结构非常宝贵。此外,包含“导致”异常的用户详细信息的结构将很方便。我将不得不考虑添加其中一些作为用户流转储。

于 2009-12-20T16:43:41.583 回答
1

Breakpad 库使用用户流来获取一些簿记信息。它包括一个带有专用线程的线程 ID 的流,该线程执行小型转储写入,以便可以将其从堆栈跟踪中排除。如果转储是为了响应非致命回调(例如 CRT 的无效参数处理程序或纯虚拟调用处理程序)而写入的,它还包括一个带有断言信息的流。

于 2013-01-29T15:51:07.107 回答
1

可能比在此处填写其他信息更有用的是包含您使用WerRegisterFile生成的任何日志文件。

于 2009-12-27T20:12:02.660 回答