赞
踩
提供给用户使用的程序如果崩溃,如果能生成相应的转储文件,那么很容易定位出错原因
对于自己编写的win32程序,可以如下编写
__try
{
逻辑代码
...
}
__exception(ExceptionHandler(GetExceptionInformation()))
{
//log info
//::ExitProcess();
}
ExceptionHandler里面进行转储文件生成
unsigned long ExceptionHandler(LPEXCEPTION_POINTERS pExceptionPointers)
{
char szFile[MAX_PATH];
sprintf(szFile, "mydmp%d.dmp", exe_version); // 记录程序版本
HANDLE hDmpFile = ::CreateFile(szFile, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_WRITE|FILE_SHARE_READ, 0, CREATE_ALWAYS, 0, 0)
MINIDUMP_EXEPTION_INFORMATION stInfo = {0};
stInfo.ThreadId = GetCurrentThreadId();
stInfo.ExceptionPointers = pExceptionPointers;
stInfo.ClientPointers = TRUE;
BOOL bOk = MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。