Qt 创建程序,屏蔽错误框,但错误框仍存在阻止程序运行
Qt 创建程序,WIN7 32位机器运行一段时间,长的9天,短的5天右,程序会提示错误,为保证程序能持续运行,添加部分代码,来记录错误生成dump文件,代码如下:
LONG ApplicationCrashHandler(EXCEPTION_POINTERS *pException){//程式异常捕获
QString s = QTime::currentTime().toString("HH时mm分ss秒zzz")+".dmp";
HANDLE hDumpFile = CreateFile(s.utf16(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if( hDumpFile != INVALID_HANDLE_VALUE){
//Dump信息
MINIDUMP_EXCEPTION_INFORMATION dumpInfo;
dumpInfo.ExceptionPointers = pException;
dumpInfo.ThreadId = GetCurrentThreadId();
dumpInfo.ClientPointers = TRUE;
//写入Dump文件内容
MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, NULL, NULL);
}
return EXCEPTION_EXECUTE_HANDLER;
}
这段代码在其它机器测试时,均会生成日志文件且退出;
但在现场提示错误
从系统日志查看错误信息如下:
日志名称: Application
来源: Application Error
日期: 2017/4/22 1:32:41
事件 ID: 1000
任务类别: 应用程序崩溃事件
级别: 错误
关键字: 经典
用户: 暂缺
计算机: UNO-PC
描述:
错误应用程序名称: MP_Interface.exe,版本: 1.0.0.0,时间戳: 0x58f5ceb4
错误模块名称: ntdll.dll,版本: 6.1.7601.17514,时间戳: 0x4ce7b96e
异常代码: 0xc0000005
错误偏移量: 0x00052d37
错误进程 ID: 0xa08
错误应用程序启动时间: 0x01d2b81eaaf62b86
错误应用程序路径: D:\SE\bin\MP_Interface.exe
错误模块路径: C:\windows\SYSTEM32\ntdll.dll
报告 ID: 85461ee2-26b8-11e7-be33-000babb38208
事件 Xml:
<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="2017-04-21T17:32:41.000000000Z" />
<EventRecordID>1760</EventRecordID>
<Channel>Application</Channel>
<Computer>UNO-PC</Computer>
<Security />
</System>
<EventData>
<Data>MP_DkInterface.exe</Data>
<Data>1.0.0.0</Data>
<Data>58f5ceb4</Data>
<Data>ntdll.dll</Data>
<Data>6.1.7601.17514</Data>
<Data>4ce7b96e</Data>
<Data>c0000005</Data>
<Data>00052d37</Data>
<Data>a08</Data>
<Data>01d2b81eaaf62b86</Data>
<Data>D:\SE\bin\MP_DkInterface.exe</Data>
<Data>C:\windows\SYSTEM32\ntdll.dll</Data>
<Data>85461ee2-26b8-11e7-be33-000babb38208</Data>
</EventData>
</Event>
哪位高手看看,可以确认程序出错后退出即可