186 lines
5.4 KiB
C
186 lines
5.4 KiB
C
|
|
#pragma once
|
|||
|
|
|
|||
|
|
#include "SystemInfo.h"
|
|||
|
|
#include "RyeolHttpClient.h"
|
|||
|
|
#include "../Utility/AssertX.h"
|
|||
|
|
#include "../Utility/CriticalSection.h"
|
|||
|
|
#include <vector>
|
|||
|
|
|
|||
|
|
using namespace Ryeol;
|
|||
|
|
|
|||
|
|
class ExceptionCallback
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
virtual void OnException(_EXCEPTION_POINTERS* pExceptionInfo) { }
|
|||
|
|
};
|
|||
|
|
/*
|
|||
|
|
<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD> Ŭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
class BugReporter
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
enum DumpLevel
|
|||
|
|
{
|
|||
|
|
eMiniDumpNormal = 0,
|
|||
|
|
eMiniDumpWithDataSegs = 1,
|
|||
|
|
eMiniDumpWithFullMemory = 2,
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct ReportingServerInfo
|
|||
|
|
{
|
|||
|
|
ReportingServerInfo()
|
|||
|
|
{
|
|||
|
|
// kb <20><><EFBFBD><EFBFBD>
|
|||
|
|
nMaxReportSize = 20000; // <20>⺻<EFBFBD><E2BABB> 20<32>ް<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
#if defined(_CH)
|
|||
|
|
szViewServerURL = "";//"http://116.211.21.173/ReportList.aspx";
|
|||
|
|
szServerURL = "http://116.211.21.173/BugReport/BugProcess.aspx";
|
|||
|
|
szSIDURL = "http://116.211.21.173/BugReport/dumpprocess.aspx";
|
|||
|
|
// #elif defined(_JP)
|
|||
|
|
// szViewServerURL = "";
|
|||
|
|
// szServerURL = "bugreport.hangame.co.jp/BugProcess.aspx";
|
|||
|
|
// szSIDURL = "bugreport.hangame.co.jp/dumpprocess.aspx";
|
|||
|
|
// #elif defined(_TW)
|
|||
|
|
// szViewServerURL = "";
|
|||
|
|
// szServerURL = "http://112.121.85.5/BugTrace.aspx";
|
|||
|
|
// szSIDURL = "http://112.121.85.5/dumpprocess.aspx";
|
|||
|
|
// #elif defined(_US)
|
|||
|
|
// szViewServerURL = "";
|
|||
|
|
// szServerURL = "http://208.85.111.192/BugProcess.aspx";
|
|||
|
|
// szSIDURL = "http://208.85.111.192/dumpprocess.aspx";
|
|||
|
|
// #elif defined(_SG)
|
|||
|
|
// szViewServerURL = "";
|
|||
|
|
// szServerURL = "http://bugrpt.dn.cherrycredits.com/BugProcess.aspx";
|
|||
|
|
// szSIDURL = "http://bugrpt.dn.cherrycredits.com/dumpprocess.aspx";
|
|||
|
|
#elif defined(_KRAZ)
|
|||
|
|
szViewServerURL = "";
|
|||
|
|
szServerURL = "http://61.251.164.138/BugProcess.aspx"; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>°<EFBFBD>
|
|||
|
|
szSIDURL = "http://61.251.164.138/BugReport/dumpprocess.aspx"; //<2F><><EFBFBD><EFBFBD> <20><EFBFBD><DFBB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD> <20><EFBFBD>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD> üũ<C3BC>ϴ°<CFB4>
|
|||
|
|
#else
|
|||
|
|
szViewServerURL = "";
|
|||
|
|
szServerURL = "";
|
|||
|
|
szSIDURL = "";
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
szNoticeMsg = L"";
|
|||
|
|
bUseAutoView = false;
|
|||
|
|
bSaveLocal = false; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϵ忡 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>α<CEB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΰ<EFBFBD>.
|
|||
|
|
bUseConfirm = false;
|
|||
|
|
hWnd = NULL;
|
|||
|
|
hAppIcon = 0;
|
|||
|
|
hInst = 0;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
std::string szServerURL;
|
|||
|
|
std::string szViewServerURL;
|
|||
|
|
std::string szSIDURL;
|
|||
|
|
std::wstring szAppName;
|
|||
|
|
std::wstring szNoticeTitle;
|
|||
|
|
std::wstring szNoticeMsg;
|
|||
|
|
std::wstring szSendButtonStr;
|
|||
|
|
std::wstring szNotSendButtonStr;
|
|||
|
|
HICON hAppIcon;
|
|||
|
|
|
|||
|
|
DWORD nMaxReportSize;
|
|||
|
|
bool bUseAutoView; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bool bSaveLocal; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϵ忡 <20><><EFBFBD><EFBFBD><EFBFBD>Ұ<EFBFBD><D2B0><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bool bUseConfirm; // <20><><EFBFBD><EFBFBD><EEBAB8> <20><><EFBFBD><EFBFBD><EFBFBD>Ұ<EFBFBD><D2B0><EFBFBD><EFBFBD><EFBFBD> <20>ɼ<EFBFBD>
|
|||
|
|
HWND hWnd;
|
|||
|
|
HINSTANCE hInst;
|
|||
|
|
bool bEnableReporting; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
BugReporter();
|
|||
|
|
virtual ~BugReporter();
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><D7B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> url
|
|||
|
|
void SetReportingServerInfo(ReportingServerInfo& info)
|
|||
|
|
{
|
|||
|
|
m_ReportHttpInfo = info;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
ReportingServerInfo& GetReportingServerInfo() { return m_ReportHttpInfo; }
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڿ<EFBFBD>
|
|||
|
|
void SetBuildVersion(std::string& szBuildVersion) { m_szBuildVersion = szBuildVersion; }
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD> <EFBFBD>߰<EFBFBD><EFBFBD>ϱ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
|||
|
|
ex )
|
|||
|
|
std::string g_szUserNickname;
|
|||
|
|
BugReporter.AddDebugData(&g_szUserNickname); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
|||
|
|
|
|||
|
|
g_szUserNickname <EFBFBD><EFBFBD> <EFBFBD>α<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ϸ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>Ŷ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>صд<EFBFBD>. UserNick = [<EFBFBD><EFBFBD><EFBFBD><EFBFBD>] UserGuild = [<EFBFBD><EFBFBD><EFBFBD>ν<EFBFBD>Ʈ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>]
|
|||
|
|
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> UserDebugData <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ش<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȯ<EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD> <EFBFBD>ִ<EFBFBD>.
|
|||
|
|
*/
|
|||
|
|
void AddDebugData(std::string* pStr) { m_UserDataArray.push_back(pStr); }
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD> <20><>Ÿ <20>߰<EFBFBD><DFB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȯ<><C8AE><EFBFBD><EFBFBD> <20>α<CEB1> <20>־<EFBFBD><D6BE>д<EFBFBD>. <20>ʹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>α<CEB1> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʹ<EFBFBD> Ŀ<><C4BF><EFBFBD>Ƿ<EFBFBD> <20><> <20>ʿ<EFBFBD><CABF>ϰ<EFBFBD> <20>߿<EFBFBD><DFBF><EFBFBD> <20><><EFBFBD>븸 <20>α<CEB1> <20>߰<EFBFBD><DFB0>Ѵ<EFBFBD>.
|
|||
|
|
void AddLogA(char* fmt, ... );
|
|||
|
|
|
|||
|
|
void AttachCurrentTimeLog();
|
|||
|
|
|
|||
|
|
void AddLogW(WCHAR* fmt, ... );
|
|||
|
|
|
|||
|
|
void Enable(DumpLevel level = eMiniDumpWithDataSegs );
|
|||
|
|
void Disable();
|
|||
|
|
|
|||
|
|
static DWORD WINAPI _StackOverflowException( LPVOID pParam );
|
|||
|
|
static LONG __stdcall Exception_Minidump(_EXCEPTION_POINTERS* pExceptionInfo);
|
|||
|
|
static void __cdecl DefaultBadAllocFilter();
|
|||
|
|
|
|||
|
|
long BugReport(_EXCEPTION_POINTERS* pExceptionInfo);
|
|||
|
|
long MakeBugReportText(_EXCEPTION_POINTERS* pExceptionInfo);
|
|||
|
|
long MakeDumpFile(_EXCEPTION_POINTERS* pExceptionInfo);
|
|||
|
|
long HttpReporting();
|
|||
|
|
long SIDReporting();
|
|||
|
|
void SetSID( char *szSID );
|
|||
|
|
void EnableCompressDump( bool bEnable ) { m_bEnableCompress = bEnable; }
|
|||
|
|
|
|||
|
|
void ConfirmDialog();
|
|||
|
|
// <20>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>Ȳ<EFBFBD><C8B2> <20>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD><EFBFBD> <20>׳<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>α<CEB1> <20>ƺ<DEBE><C6BA><EFBFBD> <20><><EFBFBD>ؼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD>.
|
|||
|
|
long ForceReporting();
|
|||
|
|
|
|||
|
|
void SetExceptionCallBack(ExceptionCallback* pCallback) { m_pExceptionCallback = pCallback; }
|
|||
|
|
private:
|
|||
|
|
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
int m_nDumpLevel;
|
|||
|
|
bool m_bEnableDump;
|
|||
|
|
bool m_bEnableCompress;
|
|||
|
|
|
|||
|
|
// <20>α<CEB1> <20><><EFBFBD>ܼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0>ϸ鼭,, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>忡<EFBFBD><E5BFA1> <20>α<CEB1> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD> <20><><EFBFBD><EFBFBD>ȭ ó<><C3B3><EFBFBD><EFBFBD> <20><>.
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>κе<CEBA>(BugReport()) <20><><EFBFBD>Ŀ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>忡<EFBFBD><E5BFA1> <20><> <20><> <20>ְ<EFBFBD> <20>ȴٸ<C8B4> <20><><EFBFBD><EFBFBD>ȭ ó<><C3B3><EFBFBD><EFBFBD> <20>ؾ<EFBFBD><D8BE>Ѵ<EFBFBD>.
|
|||
|
|
CSyncLock m_LogLock;
|
|||
|
|
bool m_bForceLogReporting;
|
|||
|
|
|
|||
|
|
static LPTOP_LEVEL_EXCEPTION_FILTER m_pExceptionFilter;
|
|||
|
|
static _invalid_parameter_handler m_pInvalidParameterHandler;
|
|||
|
|
static _purecall_handler m_pPureCallHandler;
|
|||
|
|
|
|||
|
|
SystemInfo m_SystemInfo;
|
|||
|
|
|
|||
|
|
std::string m_szProcessName;
|
|||
|
|
std::string m_szBuildVersion;
|
|||
|
|
std::string m_szUserLog;
|
|||
|
|
std::string m_szReport;
|
|||
|
|
std::string m_szStartTime;
|
|||
|
|
std::string m_szReportingTime;
|
|||
|
|
std::string m_szFileTime;
|
|||
|
|
std::string m_szDumpFileName;
|
|||
|
|
std::string m_szCompressDumpFileName;
|
|||
|
|
std::string m_szReportFileName;
|
|||
|
|
std::vector<std::string*> m_UserDataArray;
|
|||
|
|
|
|||
|
|
ReportingServerInfo m_ReportHttpInfo;
|
|||
|
|
CHttpClientA m_HttpClient;
|
|||
|
|
CHttpClientA m_HttpClientForSID;
|
|||
|
|
|
|||
|
|
ExceptionCallback* m_pExceptionCallback;
|
|||
|
|
char m_szSID[256];
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
extern BugReporter gs_BugReporter;
|