我感兴趣的是开发人员在可以嵌入minidump的用户流数据结构中添加了什么有用的东西。 MSDN描述了MiniDumpWriteDump的参数:
PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam
并且因此描述了参数:
UserStreamParam [in]指向MINIDUMP_USER_STREAM_INFORMATION结构数组的指针。如果此参数的值为NULL,则minidump文件中不包含用户定义的信息。
我正在考虑在用户流中嵌入我的程序的最后 n 日志行,因为测试人员往往不会一直发送包含所有错误的格式正确的日志。
另外,我可以在该部分中放置硬件规格(内存,CPU,视频等)。
人们还使用了哪些用户流段?
答案 0 :(得分:3)
我喜欢您包含历史日志信息的想法。但是,如果正在生成minidump以响应某种类型的异常,那么停止读取日志文件以包含在转储中似乎并不总是最好的计划,因为系统的稳定性可能会有问题。
我们的默认类型是MiniDumpWithFullMemory。在这种情况下,用户流信息在我们的应用程序中似乎并不特别有用,因为完整内存几乎包含了我们需要的所有可能信息(至少到目前为止)。当人们向我们发送转储文件时,我们还可以获得所有错误日志文件。
但是,我们的用户可以使用配置参数更改类型。我可以看到,使用较小的minidump类型之一,用户流信息可能非常有用。在看到这篇文章之前,我从来没有真正想过minidump函数的那个参数。我们在内存中有一些结构,其中包含基本配置信息,这些信息在未生成完全内存转储的情况下非常有用。此外,包含“导致”异常的用户的详细信息的结构将是方便的。我将不得不考虑添加一些作为用户流转出的。
答案 1 :(得分:1)
在此处填写其他信息可能比使用WerRegisterFile生成的所有日志文件更有用。
答案 2 :(得分:1)
Breakpad库为某些bookkeeping information使用用户流。它包含一个流,该流具有执行minidump写入的专用线程的线程ID,以便可以从堆栈跟踪中排除它。如果转储是为了响应非致命回调而编写的,它还包括带有断言信息的流,例如CRT的无效参数处理程序或纯虚拟调用处理程序。