Output a log, savegame and screenshot on desync events
This commit is contained in:
@@ -375,6 +375,8 @@ class CrashLogOSX : public CrashLog {
|
||||
}
|
||||
|
||||
public:
|
||||
struct DesyncTag {};
|
||||
|
||||
/**
|
||||
* A crash log is always generated by signal.
|
||||
* @param signum the signal that was caused by the crash.
|
||||
@@ -399,6 +401,13 @@ public:
|
||||
#endif /* WITH_UCONTEXT */
|
||||
}
|
||||
|
||||
CrashLogOSX(DesyncTag tag) : signum(0), si(nullptr), context(nullptr), signal_instruction_ptr_valid(false)
|
||||
{
|
||||
filename_log[0] = '\0';
|
||||
filename_save[0] = '\0';
|
||||
filename_screenshot[0] = '\0';
|
||||
}
|
||||
|
||||
/** Generate the crash log. */
|
||||
bool MakeCrashLog()
|
||||
{
|
||||
@@ -502,3 +511,9 @@ void CDECL HandleCrash(int signum, siginfo_t *si, void *context)
|
||||
sigaction(*i, &sa, nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
/* static */ void CrashLog::DesyncCrashLog()
|
||||
{
|
||||
CrashLogOSX log(CrashLogOSX::DesyncTag{});
|
||||
log.MakeDesyncCrashLog();
|
||||
}
|
||||
|
||||
@@ -517,6 +517,8 @@ class CrashLogUnix : public CrashLog {
|
||||
#endif
|
||||
|
||||
public:
|
||||
struct DesyncTag {};
|
||||
|
||||
/**
|
||||
* A crash log is always generated by signal.
|
||||
* @param signum the signal that was caused by the crash.
|
||||
@@ -544,6 +546,15 @@ public:
|
||||
{
|
||||
}
|
||||
#endif /* WITH_SIGACTION */
|
||||
|
||||
CrashLogUnix(DesyncTag tag) : signum(0)
|
||||
{
|
||||
#ifdef WITH_SIGACTION
|
||||
this->si = nullptr;
|
||||
this->context = nullptr;
|
||||
this->signal_instruction_ptr_valid = false;
|
||||
#endif
|
||||
}
|
||||
};
|
||||
|
||||
/** The signals we want our crash handler to handle. */
|
||||
@@ -608,3 +619,9 @@ static void CDECL HandleCrash(int signum)
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/* static */ void CrashLog::DesyncCrashLog()
|
||||
{
|
||||
CrashLogUnix log(CrashLogUnix::DesyncTag{});
|
||||
log.MakeDesyncCrashLog();
|
||||
}
|
||||
|
||||
@@ -609,6 +609,12 @@ static void CDECL CustomAbort(int signal)
|
||||
SetUnhandledExceptionFilter(ExceptionHandler);
|
||||
}
|
||||
|
||||
/* static */ void CrashLog::DesyncCrashLog()
|
||||
{
|
||||
CrashLogWindows log(nullptr);
|
||||
log.MakeDesyncCrashLog();
|
||||
}
|
||||
|
||||
/* The crash log GUI */
|
||||
|
||||
static bool _expanded;
|
||||
|
||||
Reference in New Issue
Block a user