mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Write minidump and slight code improvements
* Write minidumps to disk when the game crashes. * Initialize global process timestamp as early as possible and separate from log dir.
This commit is contained in:
parent
b089c59062
commit
d49f252f4d
@ -18,7 +18,7 @@ void SpdLog_Init(void)
|
||||
}
|
||||
|
||||
#ifndef NETCONSOLE
|
||||
g_svLogSessionDirectory = fmt::format("platform\\logs\\{:s}\\", CreateTimedFileName());
|
||||
g_LogSessionDirectory = fmt::format("platform\\logs\\{:s}", g_ProcessTimestamp);
|
||||
/************************
|
||||
* IMGUI LOGGER SETUP *
|
||||
************************/
|
||||
@ -67,23 +67,23 @@ void SpdLog_Create()
|
||||
* ROTATE LOGGER SETUP *
|
||||
************************/
|
||||
spdlog::rotating_logger_mt<spdlog::synchronous_factory>("squirrel_re(warning)"
|
||||
, fmt::format("{:s}{:s}", g_svLogSessionDirectory, "script_warning.log"), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
||||
, fmt::format("{:s}\\{:s}", g_LogSessionDirectory, "script_warning.log"), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
||||
spdlog::rotating_logger_mt<spdlog::synchronous_factory>("squirrel_re"
|
||||
, fmt::format("{:s}{:s}", g_svLogSessionDirectory, "script.log"), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
||||
, fmt::format("{:s}\\{:s}", g_LogSessionDirectory, "script.log"), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
||||
spdlog::rotating_logger_mt<spdlog::synchronous_factory>("sdk"
|
||||
, fmt::format("{:s}{:s}", g_svLogSessionDirectory, "message.log"), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
||||
, fmt::format("{:s}\\{:s}", g_LogSessionDirectory, "message.log"), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
||||
spdlog::rotating_logger_mt<spdlog::synchronous_factory>("sdk(warning)"
|
||||
, fmt::format("{:s}{:s}", g_svLogSessionDirectory, "warning.log"), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
||||
, fmt::format("{:s}\\{:s}", g_LogSessionDirectory, "warning.log"), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
||||
spdlog::rotating_logger_mt<spdlog::synchronous_factory>("sdk(error)"
|
||||
, fmt::format("{:s}{:s}", g_svLogSessionDirectory, "error.log"), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
||||
, fmt::format("{:s}\\{:s}", g_LogSessionDirectory, "error.log"), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
||||
spdlog::rotating_logger_mt<spdlog::synchronous_factory>("net_trace"
|
||||
, fmt::format("{:s}{:s}", g_svLogSessionDirectory, "net_trace.log"), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
||||
, fmt::format("{:s}\\{:s}", g_LogSessionDirectory, "net_trace.log"), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
||||
#ifndef DEDICATED
|
||||
spdlog::rotating_logger_mt<spdlog::synchronous_factory>("netconsole"
|
||||
, fmt::format("{:s}{:s}", g_svLogSessionDirectory, "netconsole.log"), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
||||
, fmt::format("{:s}\\{:s}", g_LogSessionDirectory, "netconsole.log"), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
||||
#endif // !DEDICATED
|
||||
spdlog::rotating_logger_mt<spdlog::synchronous_factory>("filesystem"
|
||||
, fmt::format("{:s}{:s}", g_svLogSessionDirectory, "filesystem.log"), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
||||
, fmt::format("{:s}\\{:s}", g_LogSessionDirectory, "filesystem.log"), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
||||
}
|
||||
|
||||
//#############################################################################
|
||||
|
@ -6,7 +6,7 @@ constexpr int SPDLOG_NUM_FILE = 512; // Sets number of files to rotate to.
|
||||
inline bool g_bSpdLog_UseAnsiClr = false;
|
||||
inline bool g_bSpdLog_PostInit = false;
|
||||
|
||||
inline string g_svLogSessionDirectory;
|
||||
inline string g_LogSessionDirectory;
|
||||
|
||||
extern std::shared_ptr<spdlog::logger> g_TermLogger;
|
||||
extern std::shared_ptr<spdlog::logger> g_ImGuiLogger;
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include <comdef.h>
|
||||
#include <direct.h>
|
||||
#include <gdiplus.h>
|
||||
#include <dbghelp.h>
|
||||
#include <timeapi.h>
|
||||
#include <shellapi.h>
|
||||
#include <Psapi.h>
|
||||
@ -117,6 +118,8 @@
|
||||
#include "tier0/dbg.h"
|
||||
#endif // !SDKLAUNCHER && !NETCONSOLE && !PLUGINSDK
|
||||
|
||||
inline string g_ProcessTimestamp = CreateTimedFileName();
|
||||
|
||||
#if !defined(SDKLAUNCHER) && !defined (NETCONSOLE) && !defined(PLUGINSDK)
|
||||
#if !defined (DEDICATED)
|
||||
inline CModule g_GameDll = CModule("r5apex.exe");
|
||||
|
@ -475,14 +475,36 @@ bool CCrashHandler::HasWhitelist()
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: writes the formatted exception buffer to a file on the disk
|
||||
// Purpose: writes the stack trace and minidump to the disk
|
||||
//-----------------------------------------------------------------------------
|
||||
void CCrashHandler::WriteFile()
|
||||
{
|
||||
string logDirectory = Format("%s%s", g_svLogSessionDirectory.c_str(), "apex_crash.txt");
|
||||
CIOStream logFile(logDirectory, CIOStream::Mode_t::WRITE);
|
||||
const string logDirectory = Format("%s\\%s.txt", g_LogSessionDirectory.c_str(), "apex_crash");
|
||||
CIOStream logFile;
|
||||
|
||||
logFile.WriteString(m_svBuffer);
|
||||
if (logFile.Open(logDirectory, CIOStream::Mode_t::WRITE))
|
||||
{
|
||||
logFile.WriteString(m_svBuffer);
|
||||
}
|
||||
|
||||
const string dmpDirectory = Format("%s\\%s.dmp", g_LogSessionDirectory.c_str(), "minidump");
|
||||
HANDLE hDmpFile = CreateFileA(dmpDirectory.c_str(), GENERIC_WRITE, 0, 0, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);
|
||||
|
||||
if (hDmpFile != INVALID_HANDLE_VALUE)
|
||||
{
|
||||
MINIDUMP_EXCEPTION_INFORMATION dumpExceptionInfo;
|
||||
dumpExceptionInfo.ThreadId = GetCurrentThreadId();
|
||||
dumpExceptionInfo.ExceptionPointers = m_pExceptionPointers;
|
||||
dumpExceptionInfo.ClientPointers = false;
|
||||
|
||||
MiniDumpWriteDump(
|
||||
GetCurrentProcess(),
|
||||
GetCurrentProcessId(),
|
||||
hDmpFile, MiniDumpNormal,
|
||||
&dumpExceptionInfo, NULL, NULL);
|
||||
|
||||
CloseHandle(hDmpFile);
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -637,7 +637,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableUAC>false</EnableUAC>
|
||||
<ModuleDefinitionFile>..\ClientSDK.def</ModuleDefinitionFile>
|
||||
<AdditionalDependencies>advapi32.lib;bcrypt.lib;crypt32.lib;d3d11.lib;wldap32.lib;ws2_32.lib;libcurl_x64.lib;libdetours_x64.lib;libimgui_x64.lib;liblzham_x64.lib;libprotobuf_x64.lib;libspdlog_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>advapi32.lib;bcrypt.lib;crypt32.lib;dbghelp.lib;d3d11.lib;wldap32.lib;ws2_32.lib;libcurl_x64.lib;libdetours_x64.lib;libimgui_x64.lib;liblzham_x64.lib;libprotobuf_x64.lib;libspdlog_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)lib\$(Configuration)\</AdditionalLibraryDirectories>
|
||||
<StackReserveSize>8000000</StackReserveSize>
|
||||
</Link>
|
||||
@ -681,7 +681,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableUAC>false</EnableUAC>
|
||||
<ModuleDefinitionFile>..\ClientSDK.def</ModuleDefinitionFile>
|
||||
<AdditionalDependencies>advapi32.lib;bcrypt.lib;crypt32.lib;d3d11.lib;wldap32.lib;ws2_32.lib;libcurl_x64.lib;libdetours_x64.lib;libimgui_x64.lib;liblzham_x64.lib;libprotobuf_x64.lib;libspdlog_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>advapi32.lib;bcrypt.lib;crypt32.lib;dbghelp.lib;d3d11.lib;wldap32.lib;ws2_32.lib;libcurl_x64.lib;libdetours_x64.lib;libimgui_x64.lib;liblzham_x64.lib;libprotobuf_x64.lib;libspdlog_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)lib\$(Configuration)\</AdditionalLibraryDirectories>
|
||||
<SetChecksum>true</SetChecksum>
|
||||
<StackReserveSize>8000000</StackReserveSize>
|
||||
@ -733,7 +733,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableUAC>false</EnableUAC>
|
||||
<ModuleDefinitionFile>..\ClientSDK.def</ModuleDefinitionFile>
|
||||
<AdditionalDependencies>advapi32.lib;bcrypt.lib;crypt32.lib;d3d11.lib;wldap32.lib;ws2_32.lib;libcurl_x64.lib;libdetours_x64.lib;libimgui_x64.lib;liblzham_x64.lib;libprotobuf_x64.lib;libspdlog_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>advapi32.lib;bcrypt.lib;crypt32.lib;dbghelp.lib;d3d11.lib;wldap32.lib;ws2_32.lib;libcurl_x64.lib;libdetours_x64.lib;libimgui_x64.lib;liblzham_x64.lib;libprotobuf_x64.lib;libspdlog_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)lib\$(Configuration)\</AdditionalLibraryDirectories>
|
||||
<SetChecksum>
|
||||
</SetChecksum>
|
||||
|
@ -99,7 +99,7 @@
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>advapi32.lib;bcrypt.lib;crypt32.lib;user32.lib;wldap32.lib;ws2_32.lib;libcurl_x64.lib;libdetours_x64.lib;liblzham_x64.lib;libprotobuf_x64.lib;libspdlog_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>advapi32.lib;bcrypt.lib;crypt32.lib;dbghelp.lib;user32.lib;wldap32.lib;ws2_32.lib;libcurl_x64.lib;libdetours_x64.lib;liblzham_x64.lib;libprotobuf_x64.lib;libspdlog_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)lib\$(Configuration)\</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile>..\Dedicated.def</ModuleDefinitionFile>
|
||||
<StackReserveSize>8000000</StackReserveSize>
|
||||
@ -135,7 +135,7 @@
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>advapi32.lib;bcrypt.lib;crypt32.lib;user32.lib;wldap32.lib;ws2_32.lib;libcurl_x64.lib;libdetours_x64.lib;liblzham_x64.lib;libprotobuf_x64.lib;libspdlog_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>advapi32.lib;bcrypt.lib;crypt32.lib;dbghelp.lib;user32.lib;wldap32.lib;ws2_32.lib;libcurl_x64.lib;libdetours_x64.lib;liblzham_x64.lib;libprotobuf_x64.lib;libspdlog_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)lib\$(Configuration)\</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile>..\Dedicated.def</ModuleDefinitionFile>
|
||||
<SetChecksum>true</SetChecksum>
|
||||
@ -180,7 +180,7 @@
|
||||
<OptimizeReferences>
|
||||
</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>advapi32.lib;bcrypt.lib;crypt32.lib;user32.lib;wldap32.lib;ws2_32.lib;libcurl_x64.lib;libdetours_x64.lib;liblzham_x64.lib;libprotobuf_x64.lib;libspdlog_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>advapi32.lib;bcrypt.lib;crypt32.lib;dbghelp.lib;user32.lib;wldap32.lib;ws2_32.lib;libcurl_x64.lib;libdetours_x64.lib;liblzham_x64.lib;libprotobuf_x64.lib;libspdlog_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)lib\$(Configuration)\</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile>..\Dedicated.def</ModuleDefinitionFile>
|
||||
<SetChecksum>
|
||||
|
@ -691,7 +691,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableUAC>false</EnableUAC>
|
||||
<ModuleDefinitionFile>..\GameSDK.def</ModuleDefinitionFile>
|
||||
<AdditionalDependencies>advapi32.lib;bcrypt.lib;crypt32.lib;d3d11.lib;wldap32.lib;ws2_32.lib;libdetours_x64.lib;libcurl_x64.lib;libimgui_x64.lib;liblzham_x64.lib;libprotobuf_x64.lib;librecast_x64.lib;libdtdetour_x64.lib;libspdlog_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>advapi32.lib;bcrypt.lib;crypt32.lib;dbghelp.lib;d3d11.lib;wldap32.lib;ws2_32.lib;libdetours_x64.lib;libcurl_x64.lib;libimgui_x64.lib;liblzham_x64.lib;libprotobuf_x64.lib;librecast_x64.lib;libdtdetour_x64.lib;libspdlog_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)lib\$(Configuration)\</AdditionalLibraryDirectories>
|
||||
<StackReserveSize>8000000</StackReserveSize>
|
||||
</Link>
|
||||
@ -735,7 +735,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableUAC>false</EnableUAC>
|
||||
<ModuleDefinitionFile>..\GameSDK.def</ModuleDefinitionFile>
|
||||
<AdditionalDependencies>advapi32.lib;bcrypt.lib;crypt32.lib;d3d11.lib;wldap32.lib;ws2_32.lib;libdetours_x64.lib;libcurl_x64.lib;libimgui_x64.lib;liblzham_x64.lib;libprotobuf_x64.lib;librecast_x64.lib;libdtdetour_x64.lib;libspdlog_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>advapi32.lib;bcrypt.lib;crypt32.lib;dbghelp.lib;d3d11.lib;wldap32.lib;ws2_32.lib;libdetours_x64.lib;libcurl_x64.lib;libimgui_x64.lib;liblzham_x64.lib;libprotobuf_x64.lib;librecast_x64.lib;libdtdetour_x64.lib;libspdlog_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)lib\$(Configuration)\</AdditionalLibraryDirectories>
|
||||
<SetChecksum>true</SetChecksum>
|
||||
<StackReserveSize>8000000</StackReserveSize>
|
||||
@ -787,7 +787,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableUAC>false</EnableUAC>
|
||||
<ModuleDefinitionFile>..\GameSDK.def</ModuleDefinitionFile>
|
||||
<AdditionalDependencies>advapi32.lib;bcrypt.lib;crypt32.lib;d3d11.lib;wldap32.lib;ws2_32.lib;libdetours_x64.lib;libcurl_x64.lib;libimgui_x64.lib;liblzham_x64.lib;libprotobuf_x64.lib;librecast_x64.lib;libdtdetour_x64.lib;libspdlog_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>advapi32.lib;bcrypt.lib;crypt32.lib;dbghelp.lib;d3d11.lib;wldap32.lib;ws2_32.lib;libdetours_x64.lib;libcurl_x64.lib;libimgui_x64.lib;liblzham_x64.lib;libprotobuf_x64.lib;librecast_x64.lib;libdtdetour_x64.lib;libspdlog_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)lib\$(Configuration)\</AdditionalLibraryDirectories>
|
||||
<SetChecksum>
|
||||
</SetChecksum>
|
||||
|
@ -100,7 +100,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)lib\$(Configuration)\</AdditionalLibraryDirectories>
|
||||
<StackReserveSize>8000000</StackReserveSize>
|
||||
<AdditionalDependencies>libspdlog_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>dbghelp.lib;libspdlog_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>IF EXIST "$(SolutionDir)..\..\r5apexdata.bin" del "$(SolutionDir)..\..\bin\x64_plugins\pluginsdk_x64.dll" && copy /Y "$(TargetPath)" "$(SolutionDir)..\..\bin\x64_plugins</Command>
|
||||
@ -130,7 +130,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)lib\$(Configuration)\</AdditionalLibraryDirectories>
|
||||
<StackReserveSize>8000000</StackReserveSize>
|
||||
<AdditionalDependencies>libspdlog_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>dbghelp.lib;libspdlog_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
</Link>
|
||||
@ -169,7 +169,7 @@
|
||||
<StackReserveSize>8000000</StackReserveSize>
|
||||
<LinkTimeCodeGeneration />
|
||||
<SetChecksum />
|
||||
<AdditionalDependencies>libspdlog_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>dbghelp.lib;libspdlog_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>IF EXIST "$(SolutionDir)..\..\r5apexdata.bin" del "$(SolutionDir)..\..\bin\x64_plugins\pluginsdk_x64.dll" && copy /Y "$(TargetPath)" "$(SolutionDir)..\..\bin\x64_plugins</Command>
|
||||
|
Loading…
x
Reference in New Issue
Block a user