⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sehdump.cpp

📁 SQLBig5BugTool 宽字符操作问题
💻 CPP
字号:
// SEHDump.cpp: implementation of the CSEHDump class.
//
//////////////////////////////////////////////////////////////////////

#include <windows.h>

#include "SEHDump.h"
#include "MyLog.h"
#include <eh.h>

//#include "MyExceptionDump.h"

#include <time.h>
#include <sys/stat.h>
#include <stdio.h>

void DumpExceptionSimple(EXCEPTION_POINTERS* lpExceptInfo);

static void My_trans_func( unsigned int u, EXCEPTION_POINTERS* lpExceptInfo ) 
{ 
//	DumpExceptionEx(lpExceptInfo);
	DumpExceptionSimple(lpExceptInfo);
}

BASESUPPORT_API long InstallXcptProber(const bool bUsedInThread) 
{ 
//	UninitSymInfo();

//	bool bOK=InitSymInfo(0);
	
	_set_se_translator( My_trans_func ); 
	
	return 0;
} 

void DumpExceptionSimple(EXCEPTION_POINTERS* lpExceptInfo)
{
	if(lpExceptInfo)
	{
		if(lpExceptInfo->ExceptionRecord)
		{
			//取得异常地址所在的模块
			MEMORY_BASIC_INFORMATION mbi={0,};
			DWORD dwRet=VirtualQuery(
				lpExceptInfo->ExceptionRecord->ExceptionAddress,
				&mbi,
				sizeof(mbi));
			
			HMODULE hMod=(HMODULE)mbi.AllocationBase;
			
			char szTxt[8192]={0,};
			
			if(hMod)
			{
				char szModFilePath[MAX_PATH]={0,};
				
				::GetModuleFileName(hMod,szModFilePath,sizeof(szModFilePath)-sizeof(szModFilePath[0]));
				
				struct _stat fs={0,};
				
				_stat(szModFilePath, &fs );
				
				struct tm tmCreationTime={0,};
				struct tm tmModifiedTime={0,};
				
				struct tm *pTM=0;
				
				pTM=localtime(&fs.st_ctime);
				if(pTM)
				{
					tmCreationTime=*pTM;
				}
				
				pTM=localtime(&fs.st_mtime);
				if(pTM)
				{
					tmModifiedTime=*pTM;
				}
				
				_snprintf(szTxt,sizeof(szTxt),
					" hMod:0x%x ModuleFilePath:%s : size:%u . CreateTime:%04d-%02d-%02d %02d:%02d:%02d "
					" LatestModifiedTime:%04d-%02d-%02d %02d:%02d:%02d .\n",
					hMod,
					szModFilePath,
					fs.st_size,
					1900+tmCreationTime.tm_year,tmCreationTime.tm_mon+1,tmCreationTime.tm_mday,
					tmCreationTime.tm_hour,tmCreationTime.tm_min,tmCreationTime.tm_sec,
					1900+tmModifiedTime.tm_year,tmModifiedTime.tm_mon+1,tmModifiedTime.tm_mday,
					tmModifiedTime.tm_hour,tmModifiedTime.tm_min,tmModifiedTime.tm_sec
					);
			}
			
			
			//记录异常信息
			WRITE_EXCEPTION_LOG(
				" critical Exception encountered (Address:0x%x Flags:0x%x NumberParameters:%d Code:0x%x ModuleInfo:%s)",
				lpExceptInfo->ExceptionRecord->ExceptionAddress,
				lpExceptInfo->ExceptionRecord->ExceptionFlags,
				lpExceptInfo->ExceptionRecord->NumberParameters,
				lpExceptInfo->ExceptionRecord->ExceptionCode,
				szTxt
				);
			
		}
		else
		{
			WRITE_EXCEPTION_LOG("ExceptionRecord is null ");
		}
	}
	else
	{
		WRITE_EXCEPTION_LOG("lpExceptInfo is null ");
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -