123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #pragma once
- #include <Windows.h>
- #include <DbgHelp.h>
- #include <iostream>
- #include <vector>
- #ifdef C_CALL_STACK_EXPORTS
- #define C_CALL_STACK_DLL_API __declspec(dllexport)
- #else
- #define C_CALL_STACK_DLL_API //__declspec(dllimport)
- #endif
- // Ìí¼Ó¶Ôdbghelp.libµÄ±àÒëÒÀÀµ
- #pragma comment(lib, "dbghelp.lib")
- using namespace std;
- namespace ns_ccs {
- #define MAX_ADDRESS_LENGTH 32
- #define MAX_NAME_LENGTH 1024
- typedef VOID(_stdcall* CallBackCallStack) (VOID);
- typedef struct _CrashInfo
- {
- CHAR ErrorCode[MAX_ADDRESS_LENGTH];
- CHAR Address[MAX_ADDRESS_LENGTH];
- CHAR Flags[MAX_ADDRESS_LENGTH];
- }CrashInfo;
- typedef struct _CallStackInfo
- {
- CHAR ModuleName[MAX_NAME_LENGTH];
- CHAR MethodName[MAX_NAME_LENGTH];
- CHAR FileName[MAX_NAME_LENGTH];
- CHAR LineNumber[MAX_NAME_LENGTH];
- }CallStackInfo;
- class C_CALL_STACK_DLL_API CCallStack
- {
- public:
-
- void SafeStrCpy(char* szDest, size_t nMaxDestSize, const char* szSrc);
- CrashInfo GetCrashInfo(const EXCEPTION_RECORD *pRecord);
- vector<CallStackInfo> GetCallStack(const CONTEXT *pContext);
-
- CCallStack();
- };
- }
- EXTERN_C C_CALL_STACK_DLL_API LONG ApplicationCrashHandler(EXCEPTION_POINTERS *pException);
|