You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

定制C++ Windows应用崩溃且生成的dmp转储文件为空的原因咨询

提问内容

我们有一款内部开发的C++应用,通过任务调度器运行。当前我们正在排查该应用的崩溃问题,崩溃时会生成Windows事件日志,正常情况下我们可通过对应的.dmp转储文件在Visual Studio中定位故障。
但目前生成的appname.dmp文件大小为0字节。
请问.dmp文件为空的潜在原因有哪些?
下方附示例事件日志供参考:

- <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</Computer> 
<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>

空崩溃转储文件


0字节dmp文件的潜在原因
  • 权限不足:任务调度器运行应用时使用的执行身份(如系统服务账户、低权限用户)对转储文件的输出目录没有写入权限,仅能创建空文件,后续写入转储内容时被系统拦截。
  • 磁盘资源不足:转储输出目录所在的磁盘分区剩余空间不足,或是执行账户的磁盘配额已耗尽,文件创建后无空间写入实际内容。
  • 转储逻辑配置错误:如果是程序内调用MiniDumpWriteDump生成转储,可能是调用时传入的文件句柄无效、转储类型参数配置错误、内存读取权限不足导致调用失败,仅生成空文件;如果是依赖Windows错误报告(WER)生成转储,可能是WER的转储大小、转储类型、存储上限等系统级配置错误,导致内容无法写入。
  • 进程被提前终止:转储写入需要一定时间,若任务调度器配置了崩溃后立即清理/重启进程的规则,或是存在第三方监控程序、杀毒软件发现进程异常后直接强制结束进程,会打断转储写入流程,导致文件为空。
  • 二次崩溃问题:从提供的事件日志可见异常代码为e06d7363,属于C++未捕获异常。如果程序自身注册了未捕获异常处理钩子,钩子执行过程中又触发了新的崩溃,会导致转储逻辑无法正常执行完成,最终只能生成空文件。
  • 文件被锁定:转储文件创建后,被杀毒软件、实时备份工具、文件监控类程序抢先加锁,导致系统/程序无法写入转储内容,最终文件大小为0。

内容的提问来源于stack exchange,提问作者Andy P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 19:06:08