2019-08-23 11:56:54 -07:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "../../BeefySysLib/Common.h"
|
2020-05-28 07:25:25 -07:00
|
|
|
#include "../util/CritSect.h"
|
2019-08-23 11:56:54 -07:00
|
|
|
|
|
|
|
NS_BF_BEGIN
|
|
|
|
|
|
|
|
typedef void(*CrashInfoFunc)();
|
|
|
|
|
|
|
|
class CrashCatcher
|
|
|
|
{
|
2020-05-28 07:25:25 -07:00
|
|
|
public:
|
|
|
|
Array<CrashInfoFunc> mCrashInfoFuncs;
|
2020-05-29 16:10:47 -07:00
|
|
|
String mCrashInfo;
|
2020-05-28 07:25:25 -07:00
|
|
|
bool mCrashed;
|
|
|
|
bool mInitialized;
|
|
|
|
CritSect mBfpCritSect;
|
|
|
|
EXCEPTION_POINTERS* mExceptionPointers;
|
|
|
|
LPTOP_LEVEL_EXCEPTION_FILTER mPreviousFilter;
|
|
|
|
bool mDebugError;
|
2020-09-17 14:15:38 -07:00
|
|
|
bool mCloseRequested;
|
2020-05-29 16:10:47 -07:00
|
|
|
BfpCrashReportKind mCrashReportKind;
|
2020-09-17 14:15:38 -07:00
|
|
|
String mRelaunchCmd;
|
2020-05-28 07:25:25 -07:00
|
|
|
|
2019-08-23 11:56:54 -07:00
|
|
|
public:
|
|
|
|
CrashCatcher();
|
|
|
|
|
2020-05-28 08:47:39 -07:00
|
|
|
virtual void Init();
|
|
|
|
virtual void AddCrashInfoFunc(CrashInfoFunc crashInfoFunc);
|
|
|
|
virtual void AddInfo(const StringImpl& str);
|
2019-08-23 11:56:54 -07:00
|
|
|
|
2020-05-28 08:47:39 -07:00
|
|
|
virtual void Test();
|
|
|
|
virtual void Crash(const StringImpl& str);
|
|
|
|
virtual void SetCrashReportKind(BfpCrashReportKind crashReportKind);
|
2020-09-17 14:15:38 -07:00
|
|
|
virtual void SetRelaunchCmd(const StringImpl& relaunchCmd);
|
2020-05-28 07:25:25 -07:00
|
|
|
|
|
|
|
static CrashCatcher* Get();
|
2022-02-15 22:11:56 -08:00
|
|
|
static int Shutdown();
|
2019-08-23 11:56:54 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
NS_BF_END
|