C++ 为什么MiniTumpWriteDomainp会生成无效转储?

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

我写了应该写转储的代码。它在简单的测试应用程序上创建有效的转储文件(我测试了它们,它们可以工作),但是由实际应用程序生成的转储文件并没有被VisualStudio和WinDbg加载(甚至通过调试构建)

来自WinDbg:

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文件。