Plasma Engine  2.0
Loading...
Searching...
No Matches
CrashHandler.h
1#pragma once
2
3#include <Foundation/Basics.h>
4#include <Foundation/Strings/String.h>
5#include <Foundation/Types/Bitflags.h>
6
13
20class PL_FOUNDATION_DLL plCrashHandler
21{
22public:
24 virtual ~plCrashHandler();
25
26 static void SetCrashHandler(plCrashHandler* pHandler);
27 static plCrashHandler* GetCrashHandler();
28
29 virtual void HandleCrash(void* pOsSpecificData) = 0;
30
31private:
32 static plCrashHandler* s_pActiveHandler;
33};
34
39class PL_FOUNDATION_DLL plCrashHandler_WriteMiniDump : public plCrashHandler
40{
41public:
42 static plCrashHandler_WriteMiniDump g_Instance;
43
44 struct PathFlags
45 {
46 using StorageType = plUInt8;
47
48 enum Enum
49 {
50 AppendDate = PL_BIT(0),
51 AppendSubFolder = PL_BIT(1),
52 AppendPID = PL_BIT(2),
53
54 Default = AppendDate | AppendSubFolder | AppendPID
55 };
56
57 struct Bits
58 {
59 StorageType AppendDate : 1;
60 StorageType AppendSubFolder : 1;
61 StorageType AppendPID : 1;
62 };
63 };
64
65public:
67
69 void SetFullDumpFilePath(plStringView sFullAbsDumpFilePath);
70
72 void SetDumpFilePath(plStringView sAbsDirectoryPath, plStringView sAppName, plBitflags<PathFlags> flags = PathFlags::Default);
73
75 void SetDumpFilePath(plStringView sAppName, plBitflags<PathFlags> flags = PathFlags::Default);
76
77 virtual void HandleCrash(void* pOsSpecificData) override;
78
79protected:
80 virtual bool WriteOwnProcessMiniDump(void* pOsSpecificData);
81 virtual void PrintStackTrace(void* pOsSpecificData);
82
83 plString m_sDumpFilePath;
84};
85
86PL_DECLARE_FLAGS_OPERATORS(plCrashHandler_WriteMiniDump::PathFlags);
A default implementation of plCrashHandler that tries to write a mini-dump and prints the callstack.
Definition CrashHandler.h:40
Helper class to manage the top level exception handler.
Definition CrashHandler.h:21
plStringView represent a read-only sub-string of a larger string, as it can store a dedicated string ...
Definition StringView.h:34
The plBitflags class allows you to work with type-safe bitflags.
Definition Bitflags.h:82
Definition CrashHandler.h:45
Enum
Definition CrashHandler.h:49