Bespoke C++ Windows 应用程序崩溃并生成一个空的 dmp 文件

Bespoke C++ Windows app crashing and producing an empty dmp file

我们有一个内部 C++ 应用程序,我们是 运行 通过任务计划程序。我们正在尝试跟踪导致崩溃的应用程序问题,一个 windows 事件,我们通常会查找 .dmp 文件以使我们能够跟踪 visual studio.[=13= 中的问题]

但是,这些 windows 转储文件 [appname. dmp] 是零字节。

有没有人知道 .dmp 文件为空的潜在原因?

下面的示例事件日志以备不时之需。

非常感谢您的帮助和想法:)

安迪 P

- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> 
- <System> 
<Provider Name="Application Error" /> 
<EventID Qualifiers="0">1000</EventID> 
<Level>2</Level> 
<Task>100</Task> 
<Keywords>0x80000000000000</Keywords> 
<TimeCreated SystemTime="2021-11-09T15:48:04.642807400Z" /> 
<EventRecordID>5214</EventRecordID> 
<Channel>Application</Channel> 
<Computer>redacted> 
<Security /> 
</System> 
- <EventData> 
<Data>redacted.exe</Data> 
<Data>1.0.0.1</Data> 
<Data>60816c15</Data> 
<Data>KERNELBASE.dll</Data> 
<Data>10.0.17763.2183</Data> 
<Data>12a65345</Data> 
<Data>e06d7363</Data> 
<Data>001235e2</Data> 
<Data>fa0</Data> 
<Data>01d7d57fa38520cb</Data> 
<Data>K:\redacted\redacted.exe</Data> 
<Data>C:\WINDOWS\System32\KERNELBASE.dll</Data> 
<Data>03eae790-81b8-4040-aab4-6068440c4db0</Data> 
<Data /> 
<Data /> 
</EventData> 
</Event>

MSDN 指出了一个非常重要的限制:从刚刚崩溃的进程内部写入小型转储是不可靠的。从你的问题中不清楚你是否使用单独的进程来编写转储(“redacted.exe”?),​​所以这绝对是一个可能的原因。