C++ 为什么MiniTumpWriteDomainp会生成无效转储?
我写了应该写转储的代码。它在简单的测试应用程序上创建有效的转储文件(我测试了它们,它们可以工作),但是由实际应用程序生成的转储文件并没有被VisualStudio和WinDbg加载(甚至通过调试构建) 来自WinDbg:C++ 为什么MiniTumpWriteDomainp会生成无效转储?,c++,windows,windows-10,windbg,C++,Windows,Windows 10,Windbg,我写了应该写转储的代码。它在简单的测试应用程序上创建有效的转储文件(我测试了它们,它们可以工作),但是由实际应用程序生成的转储文件并没有被VisualStudio和WinDbg加载(甚至通过调试构建) 来自WinDbg: Microsoft (R) Windows Debugger Version 10.0.17030.1002 AMD64 Copyright (c) Microsoft Corporation. All rights reserved. Loading Dump File
Microsoft (R) Windows Debugger Version 10.0.17030.1002 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
Loading Dump File [C:\Users\Dmitrii\temp\MidiDump.dmp]
Minidump does not have system info
Could not open dump file [C:\Users\Dmitrii\temp\MidiDump.dmp], HRESULT 0x80004005
"Unspecified error"
The debugging session could not be started: FAILURE HR=0x80004005: Failed to open dump file: C:\Users\Dmitrii\temp\MidiDump.dmp
Couldn't parse command line parameters: FAILURE HR=0x80004005: Failed to open dump file: C:\Users\Dmitrii\temp\MidiDump.dmp
知道是什么导致了这些错误吗?当我过去遇到这个问题时,它是一个权限问题。调用
minidumpbritedump
的进程是否以提升的权限运行?(尝试设置为RequiredAdministrator。)另外,您正在调用SetPrivilege(hToken,SE_DEBUG_NAME,true)代码>在打开进程句柄转储之前在当前进程或当前线程令牌上?我遇到的另一个可能的原因是,崩溃是由进程泄漏内存导致的,直到主机耗尽RAM并不得不出于自卫而终止进程。在这种情况下,进程的内存空间太大(并且用于将其保存到磁盘的可用RAM太小),以至于MiniDump函数无法正确保存.dmp文件。当我过去遇到这个问题时,这是一个权限问题。调用minidumpbritedump
的进程是否以提升的权限运行?(尝试设置为RequiredAdministrator。)另外,您正在调用SetPrivilege(hToken,SE_DEBUG_NAME,true)代码>在打开进程句柄转储之前在当前进程或当前线程令牌上?我遇到的另一个可能的原因是,崩溃是由进程泄漏内存导致的,直到主机耗尽RAM并不得不出于自卫而终止进程。在这种情况下,进程的内存空间太大(并且用于将其保存到磁盘的可用RAM太少),以至于MiniDump函数无法正确保存.dmp文件。