lnk commit front code
This commit is contained in:
132
include/mmslite/msjexhnd.h
Normal file
132
include/mmslite/msjexhnd.h
Normal file
@@ -0,0 +1,132 @@
|
||||
/************************************************************************/
|
||||
/* SISCO SOFTWARE MODULE HEADER *****************************************/
|
||||
/************************************************************************/
|
||||
/* (c) Copyright Systems Integration Specialists Company, Inc., */
|
||||
/* 1997-2001, All Rights Reserved */
|
||||
/* */
|
||||
/* MODULE NAME : msjexhnd.cpp */
|
||||
/* PRODUCT(S) : */
|
||||
/* */
|
||||
/* MODULE DESCRIPTION : Unhandled Exception Hanlder */
|
||||
/* */
|
||||
/* GLOBAL FUNCTIONS DEFINED IN THIS MODULE : */
|
||||
/* */
|
||||
/* MODIFICATION LOG : */
|
||||
/* Date Who Rev Comments */
|
||||
/* -------- --- ------ ------------------------------------------- */
|
||||
/* 05/14/02 DSF 02 Added support for PDBs */
|
||||
/* 02/08/02 MDE 01 Added Debug Exception and Slog support */
|
||||
/************************************************************************/
|
||||
|
||||
#ifndef __MSJEXHND_H__
|
||||
#define __MSJEXHND_H__
|
||||
|
||||
#define EXCEPTION_DIAGNOSTIC_DEBUG 0xE0000001
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
class MSJExceptionHandler
|
||||
{
|
||||
public:
|
||||
|
||||
MSJExceptionHandler( );
|
||||
~MSJExceptionHandler( );
|
||||
|
||||
void SetLogFileName( PTSTR pszLogFileName );
|
||||
#ifdef DEBUG_SISCO
|
||||
static void SetLogCtrl (LOG_CTRL *pLogCtrl);
|
||||
#endif
|
||||
|
||||
private:
|
||||
|
||||
// entry point where control comes on an unhandled exception
|
||||
static LONG WINAPI MSJUnhandledExceptionFilter(PEXCEPTION_POINTERS pExceptionInfo );
|
||||
|
||||
// where report info is extracted and generated
|
||||
static void GenerateExceptionReport( PEXCEPTION_POINTERS pExceptionInfo );
|
||||
|
||||
// Helper functions
|
||||
static LPTSTR GetExceptionString( DWORD dwCode );
|
||||
static BOOL GetLogicalAddress( PVOID addr, PTSTR szModule, DWORD len,
|
||||
DWORD& section, DWORD& offset );
|
||||
static void IntelStackWalk( PCONTEXT pContext );
|
||||
#if 1
|
||||
static void ImagehlpStackWalk( PCONTEXT pContext );
|
||||
#endif
|
||||
static int __cdecl _tprintf(const TCHAR * format, ...);
|
||||
|
||||
#if 1
|
||||
static BOOL InitImagehlpFunctions( void );
|
||||
#endif
|
||||
|
||||
// Variables used by the class
|
||||
static TCHAR m_szPath[MAX_PATH];
|
||||
static TCHAR m_szLogFileName[MAX_PATH];
|
||||
static LPTOP_LEVEL_EXCEPTION_FILTER m_previousFilter;
|
||||
#ifdef DEBUG_SISCO
|
||||
static LOG_CTRL *m_pLogCtrl;
|
||||
#endif
|
||||
static HANDLE m_hReportFile;
|
||||
static BOOL m_bDebugExcept;
|
||||
static BOOL m_bFirstTime;
|
||||
|
||||
#if 1
|
||||
// Make typedefs for some IMAGEHLP.DLL functions so that we can use them
|
||||
// with GetProcAddress
|
||||
typedef BOOL (__stdcall * SYMINITIALIZEPROC)( HANDLE, LPSTR, BOOL );
|
||||
typedef BOOL (__stdcall *SYMCLEANUPPROC)( HANDLE );
|
||||
|
||||
typedef BOOL (__stdcall * STACKWALKPROC)
|
||||
( DWORD, HANDLE, HANDLE, LPSTACKFRAME, LPVOID,
|
||||
PREAD_PROCESS_MEMORY_ROUTINE,PFUNCTION_TABLE_ACCESS_ROUTINE,
|
||||
PGET_MODULE_BASE_ROUTINE, PTRANSLATE_ADDRESS_ROUTINE );
|
||||
|
||||
typedef LPVOID (__stdcall *SYMFUNCTIONTABLEACCESSPROC)( HANDLE, DWORD );
|
||||
|
||||
typedef DWORD (__stdcall *SYMGETMODULEBASEPROC)( HANDLE, DWORD );
|
||||
|
||||
typedef BOOL (__stdcall *SYMGETSYMFROMADDRPROC) ( HANDLE, DWORD, PDWORD, PIMAGEHLP_SYMBOL );
|
||||
|
||||
typedef BOOL (__stdcall *SYMGETSEARCHPATHPROC) ( HANDLE, PSTR, DWORD );
|
||||
typedef BOOL (__stdcall *SYMSETSEARCHPATHPROC) ( HANDLE, PSTR );
|
||||
|
||||
typedef DWORD (__stdcall *SYMGETOPTIONSPROC) ();
|
||||
typedef DWORD (__stdcall *SYMSETOPTIONSPROC) (DWORD);
|
||||
typedef BOOL (__stdcall *SYMGETLINEFROMADDRPROC) (HANDLE, DWORD, PDWORD, PIMAGEHLP_LINE);
|
||||
|
||||
static SYMINITIALIZEPROC _SymInitialize;
|
||||
static SYMCLEANUPPROC _SymCleanup;
|
||||
static STACKWALKPROC _StackWalk;
|
||||
static SYMFUNCTIONTABLEACCESSPROC _SymFunctionTableAccess;
|
||||
static SYMGETMODULEBASEPROC _SymGetModuleBase;
|
||||
static SYMGETSYMFROMADDRPROC _SymGetSymFromAddr;
|
||||
static SYMGETSEARCHPATHPROC _SymGetSearchPath;
|
||||
static SYMSETSEARCHPATHPROC _SymSetSearchPath;
|
||||
|
||||
static SYMGETOPTIONSPROC _SymGetOptions;
|
||||
static SYMSETOPTIONSPROC _SymSetOptions;
|
||||
static SYMGETLINEFROMADDRPROC _SymGetLineFromAddr;
|
||||
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
extern MSJExceptionHandler g_MSJExceptionHandler; // global instance of class
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void ExpInit ();
|
||||
void ExpRaiseDebugException ();
|
||||
#ifdef DEBUG_SISCO
|
||||
void ExpSetLogCtrl (LOG_CTRL *pLogCtrl);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user