我使用WinAPI在C ++ / MFC中编码。我的软件包括本地服务和用户模式应用程序,为登录的Windows用户提供用户界面。我正在寻找一种方法来收集.dmp和.hdmp文件,以防在这些模块中发生崩溃。我知道WER据称会收集它们并将它们提交给Microsoft。有没有办法收集这些文件并将它们保存在硬盘上?
PS。我需要这个在Windows XP SP3,Vista,7,8下工作。
答案 0 :(得分:3)
Windows 2000和XP已经使用DrWatson保存了故障转储。运行drwtsn32.exe
允许您获取/配置日志和转储文件的路径。
Windows Vista +仅使用WER,默认情况下不会保存转储,但您可以enable creation of user mode dumps。
我将HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\DumpType
值设置为2以保存完整转储,默认情况下存储在%LOCALAPPDATA%\CrashDumps
(C:\Users\dee.earley\AppData\Local\CrashDumps
)中。
安装WinDebug之类的调试器还可以让您在用户模式应用和服务发生时捕获异常。
答案 1 :(得分:0)
Microsoft的DebugDiag工具对于监视进程并在异常和崩溃时吐出转储文件非常有用。
http://www.microsoft.com/en-us/download/details.aspx?id=26798
我在多个客户环境中使用它来追踪我在自己的环境中无法重现的问题。
答案 2 :(得分:0)
如果您正在寻找处理客户端崩溃的方法,那么最好的解决方案就是使用google-breakpad库。在您的情况下,异常处理程序将在磁盘上写入转储文件。