Add more metadata to dump files
This commit is contained in:
parent
96236d2666
commit
4570405649
@ -2,6 +2,19 @@
|
||||
{
|
||||
"#default"
|
||||
{
|
||||
"Offsets"
|
||||
{
|
||||
/*
|
||||
* This has never changed, let us hope it never does.
|
||||
*/
|
||||
"GetCmdLine"
|
||||
{
|
||||
"windows" "2"
|
||||
"linux" "2"
|
||||
"mac" "2"
|
||||
}
|
||||
}
|
||||
|
||||
"Signatures"
|
||||
{
|
||||
/*
|
||||
|
@ -48,6 +48,13 @@ GetSpew_t GetSpew;
|
||||
|
||||
char spewBuffer[65536]; // Hi.
|
||||
|
||||
char crashMap[256];
|
||||
char crashGamePath[512];
|
||||
char crashCommandLine[1024];
|
||||
char crashSourceModPath[512];
|
||||
char crashGameDirectory[256];
|
||||
char crashExtensionVersion[32];
|
||||
|
||||
char dumpStoragePath[512];
|
||||
char logPath[512];
|
||||
|
||||
@ -104,6 +111,21 @@ static bool dumpCallback(const google_breakpad::MinidumpDescriptor& descriptor,
|
||||
return succeeded;
|
||||
}
|
||||
|
||||
sys_write(extra, "-------- CONFIG BEGIN --------", 30);
|
||||
sys_write(extra, "\nMap=", 5);
|
||||
sys_write(extra, crashMap, my_strlen(crashMap));
|
||||
sys_write(extra, "\nGamePath=", 10);
|
||||
sys_write(extra, crashGamePath, my_strlen(crashGamePath));
|
||||
sys_write(extra, "\nCommandLine=", 13);
|
||||
sys_write(extra, crashCommandLine, my_strlen(crashCommandLine));
|
||||
sys_write(extra, "\nSourceModPath=", 15);
|
||||
sys_write(extra, crashSourceModPath, my_strlen(crashSourceModPath));
|
||||
sys_write(extra, "\nGameDirectory=", 15);
|
||||
sys_write(extra, crashGameDirectory, my_strlen(crashGameDirectory));
|
||||
sys_write(extra, "\nExtensionVersion=", 18);
|
||||
sys_write(extra, crashExtensionVersion, my_strlen(crashExtensionVersion));
|
||||
sys_write(extra, "\n-------- CONFIG END --------\n", 30);
|
||||
|
||||
if (GetSpew) {
|
||||
GetSpew(spewBuffer, sizeof(spewBuffer));
|
||||
sys_write(extra, "-------- CONSOLE HISTORY BEGIN --------\n", 40);
|
||||
@ -440,6 +462,10 @@ bool Accelerator::SDK_OnLoad(char *error, size_t maxlength, bool late)
|
||||
delete i;
|
||||
#endif
|
||||
|
||||
if (late) {
|
||||
this->OnCoreMapStart(NULL, 0, 0);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -458,3 +484,50 @@ void Accelerator::SDK_OnUnload()
|
||||
delete handler;
|
||||
}
|
||||
|
||||
class VFuncEmptyClass {};
|
||||
|
||||
const char *GetCmdLine()
|
||||
{
|
||||
static int getCmdLineOffset = 0;
|
||||
if (getCmdLineOffset == 0) {
|
||||
if (!gameconfig->GetOffset("GetCmdLine", &getCmdLineOffset)) {
|
||||
return "";
|
||||
}
|
||||
if (getCmdLineOffset == 0) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
void *cmdline = gamehelpers->GetValveCommandLine();
|
||||
void **vtable = *(void ***)cmdline;
|
||||
void *vfunc = vtable[getCmdLineOffset];
|
||||
|
||||
union {
|
||||
const char *(VFuncEmptyClass::*mfpnew)();
|
||||
#ifndef WIN32
|
||||
struct {
|
||||
void *addr;
|
||||
intptr_t adjustor;
|
||||
} s;
|
||||
} u;
|
||||
u.s.addr = vfunc;
|
||||
u.s.adjustor = 0;
|
||||
#else
|
||||
void *addr;
|
||||
} u;
|
||||
u.addr = vfunc;
|
||||
#endif
|
||||
|
||||
return (const char *)(reinterpret_cast<VFuncEmptyClass*>(cmdline)->*u.mfpnew)();
|
||||
}
|
||||
|
||||
void Accelerator::OnCoreMapStart(edict_t *pEdictList, int edictCount, int clientMax)
|
||||
{
|
||||
strncpy(crashMap, gamehelpers->GetCurrentMap(), sizeof(crashMap) - 1);
|
||||
strncpy(crashGamePath, g_pSM->GetGamePath(), sizeof(crashGamePath) - 1);
|
||||
strncpy(crashCommandLine, GetCmdLine(), sizeof(crashCommandLine) - 1);
|
||||
strncpy(crashSourceModPath, g_pSM->GetSourceModPath(), sizeof(crashSourceModPath) - 1);
|
||||
strncpy(crashGameDirectory, g_pSM->GetGameFolderName(), sizeof(crashGameDirectory) - 1);
|
||||
strncpy(crashExtensionVersion, SMEXT_CONF_VERSION, sizeof(crashExtensionVersion) - 1);
|
||||
}
|
||||
|
||||
|
@ -96,6 +96,14 @@ public:
|
||||
*/
|
||||
//virtual bool SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlen);
|
||||
#endif
|
||||
/**
|
||||
* @brief Called on server activation before plugins receive the OnServerLoad forward.
|
||||
*
|
||||
* @param pEdictList Edicts list.
|
||||
* @param edictCount Number of edicts in the list.
|
||||
* @param clientMax Maximum number of clients allowed in the server.
|
||||
*/
|
||||
virtual void OnCoreMapStart(edict_t *pEdictList, int edictCount, int clientMax);
|
||||
};
|
||||
|
||||
#endif // _INCLUDE_SOURCEMOD_EXTENSION_PROPER_H_
|
||||
|
@ -64,7 +64,7 @@
|
||||
//#define SMEXT_ENABLE_DBMANAGER
|
||||
#define SMEXT_ENABLE_GAMECONF
|
||||
//#define SMEXT_ENABLE_MEMUTILS
|
||||
//#define SMEXT_ENABLE_GAMEHELPERS
|
||||
#define SMEXT_ENABLE_GAMEHELPERS
|
||||
//#define SMEXT_ENABLE_TIMERSYS
|
||||
#define SMEXT_ENABLE_THREADER
|
||||
#define SMEXT_ENABLE_LIBSYS
|
||||
|
@ -18,9 +18,9 @@
|
||||
|
||||
#define SM_BUILD_TAG "-manual"
|
||||
#define SM_BUILD_UNIQUEID "[MANUAL BUILD]"
|
||||
#define SM_VERSION "2.2.0"
|
||||
#define SM_VERSION "2.2.1"
|
||||
#define SM_FULL_VERSION SM_VERSION SM_BUILD_TAG
|
||||
#define SM_FILE_VERSION 2,2,0,0
|
||||
#define SM_FILE_VERSION 2,2,1,0
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -1 +1 @@
|
||||
2.2.0
|
||||
2.2.1
|
||||
|
Loading…
Reference in New Issue
Block a user