查查SetUnhandledExceptionFilter这个函数在Delphi怎么用,可以生成异常文件。
自己保存程序的符号文件,有些异常可以直接定位.
这是VC的,可以参考下:SetUnhandledExceptionFilter(UnhandledExceptionFilterEx);LONG WINAPI UnhandledExceptionFilterEx(struct _EXCEPTION_POINTERS* ExceptionInfo)
{
CTime tm =CTime::GetCurrentTime();
CString strDumpFile = tm.Format(_T("%Y-%m-%d %H_%M_%S"));
strDumpFile+=_T(".dmp");
HANDLE hFile=CreateFile(strDumpFile,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile!=INVALID_HANDLE_VALUE)
{
MINIDUMP_EXCEPTION_INFORMATION ExInfo; ExInfo.ThreadId=::GetCurrentThreadId();
ExInfo.ExceptionPointers=ExceptionInfo;
ExInfo.ClientPointers = NULL;
// write the dump
MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MiniDumpNormal, &ExInfo, NULL, NULL );
CloseHandle(hFile);
}
theApp.PostThreadMessage(WM_QUIT,0,0);
return EXCEPTION_EXECUTE_HANDLER;
}
自己保存程序的符号文件,有些异常可以直接定位.
这是VC的,可以参考下:SetUnhandledExceptionFilter(UnhandledExceptionFilterEx);LONG WINAPI UnhandledExceptionFilterEx(struct _EXCEPTION_POINTERS* ExceptionInfo)
{
CTime tm =CTime::GetCurrentTime();
CString strDumpFile = tm.Format(_T("%Y-%m-%d %H_%M_%S"));
strDumpFile+=_T(".dmp");
HANDLE hFile=CreateFile(strDumpFile,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile!=INVALID_HANDLE_VALUE)
{
MINIDUMP_EXCEPTION_INFORMATION ExInfo; ExInfo.ThreadId=::GetCurrentThreadId();
ExInfo.ExceptionPointers=ExceptionInfo;
ExInfo.ClientPointers = NULL;
// write the dump
MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MiniDumpNormal, &ExInfo, NULL, NULL );
CloseHandle(hFile);
}
theApp.PostThreadMessage(WM_QUIT,0,0);
return EXCEPTION_EXECUTE_HANDLER;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货