Show current debug engine in the version string
This commit is contained in:
parent
6518994beb
commit
5a0caf0be0
|
@ -1097,6 +1097,11 @@ BRIDGE_IMPEXP void DbgGetSymbolInfo(const SYMBOLPTR* symbolptr, SYMBOLINFO* info
|
|||
_dbg_sendmessage(DBG_GET_SYMBOL_INFO, (void*)symbolptr, info);
|
||||
}
|
||||
|
||||
BRIDGE_IMPEXP DEBUG_ENGINE DbgGetDebugEngine()
|
||||
{
|
||||
return (DEBUG_ENGINE)_dbg_sendmessage(DBG_GET_DEBUG_ENGINE, nullptr, nullptr);
|
||||
}
|
||||
|
||||
BRIDGE_IMPEXP const char* GuiTranslateText(const char* Source)
|
||||
{
|
||||
EnterCriticalSection(&csTranslate);
|
||||
|
|
|
@ -319,6 +319,7 @@ typedef enum
|
|||
DBG_ANALYZE_FUNCTION, // param1=BridgeCFGraphList* graph, param2=duint entry
|
||||
DBG_MENU_PREPARE, // param1=int hMenu, param2=unused
|
||||
DBG_GET_SYMBOL_INFO, // param1=void* symbol, param2=SYMBOLINFO* info
|
||||
DBG_GET_DEBUG_ENGINE, // param1=unused, param2-unused
|
||||
} DBGMSG;
|
||||
|
||||
typedef enum
|
||||
|
@ -519,6 +520,13 @@ typedef enum
|
|||
mod_system
|
||||
} MODULEPARTY;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DebugEngineTitanEngine,
|
||||
DebugEngineGleeBug,
|
||||
DebugEngineStaticEngine,
|
||||
} DEBUG_ENGINE;
|
||||
|
||||
//Debugger typedefs
|
||||
typedef MEMORY_SIZE VALUE_SIZE;
|
||||
|
||||
|
@ -1046,6 +1054,7 @@ BRIDGE_IMPEXP duint DbgGetTebAddress(DWORD ThreadId);
|
|||
BRIDGE_IMPEXP bool DbgAnalyzeFunction(duint entry, BridgeCFGraphList* graph);
|
||||
BRIDGE_IMPEXP duint DbgEval(const char* expression, bool* DEFAULT_PARAM(success, nullptr));
|
||||
BRIDGE_IMPEXP void DbgGetSymbolInfo(const SYMBOLPTR* symbolptr, SYMBOLINFO* info);
|
||||
BRIDGE_IMPEXP DEBUG_ENGINE DbgGetDebugEngine();
|
||||
|
||||
//Gui defines
|
||||
typedef enum
|
||||
|
|
|
@ -876,6 +876,7 @@ extern "C" DLL_EXPORT duint _dbg_sendmessage(DBGMSG type, void* param1, void* pa
|
|||
case DBG_WIN_EVENT_GLOBAL:
|
||||
case DBG_RELEASE_ENCODE_TYPE_BUFFER:
|
||||
case DBG_GET_TIME_WASTED_COUNTER:
|
||||
case DBG_GET_DEBUG_ENGINE:
|
||||
break;
|
||||
//the rest is unsafe -> throw an exception when people try to call them
|
||||
default:
|
||||
|
@ -1485,6 +1486,25 @@ extern "C" DLL_EXPORT duint _dbg_sendmessage(DBGMSG type, void* param1, void* pa
|
|||
((const SymbolInfoGui*)symbolptr->symbol)->convertToGuiSymbol(symbolptr->modbase, (SYMBOLINFO*)param2);
|
||||
}
|
||||
break;
|
||||
|
||||
case DBG_GET_DEBUG_ENGINE:
|
||||
{
|
||||
static auto debugEngine = []
|
||||
{
|
||||
duint setting = DebugEngineTitanEngine;
|
||||
if(!BridgeSettingGetUint("Engine", "DebugEngine", &setting))
|
||||
{
|
||||
auto msg = String(GuiTranslateText(QT_TRANSLATE_NOOP("DBG", "GleeBug is now available for beta testing, would you like to enable it? Some bugs can be expected, but generally things are looking stable!\n\nYou can change this setting in the Settings dialog.")));
|
||||
auto title = String(GuiTranslateText(QT_TRANSLATE_NOOP("DBG", "New debug engine available!")));
|
||||
if(MessageBoxW(GuiGetWindowHandle(), StringUtils::Utf8ToUtf16(msg).c_str(), StringUtils::Utf8ToUtf16(title).c_str(), MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2) == IDYES)
|
||||
setting = DebugEngineGleeBug;
|
||||
BridgeSettingSetUint("Engine", "DebugEngine", setting);
|
||||
}
|
||||
return (DEBUG_ENGINE)setting;
|
||||
}();
|
||||
return debugEngine;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -624,39 +624,18 @@ static FARPROC WINAPI delayHook(unsigned dliNotify, PDelayLoadInfo pdli)
|
|||
{
|
||||
if(dliNotify == dliNotePreLoadLibrary && _stricmp(pdli->szDll, "TitanEngine.dll") == 0)
|
||||
{
|
||||
enum DebugEngine : duint
|
||||
{
|
||||
TitanEngine,
|
||||
GleeBug,
|
||||
StaticEngine,
|
||||
};
|
||||
|
||||
static DebugEngine debugEngine = []
|
||||
{
|
||||
duint setting = TitanEngine;
|
||||
if(!BridgeSettingGetUint("Engine", "DebugEngine", &setting))
|
||||
{
|
||||
auto msg = String(GuiTranslateText(QT_TRANSLATE_NOOP("DBG", "GleeBug is now available for beta testing, would you like to enable it? Some bugs can be expected, but generally things are looking stable!\n\nYou can change this setting in the Settings dialog.")));
|
||||
auto title = String(GuiTranslateText(QT_TRANSLATE_NOOP("DBG", "New debug engine available!")));
|
||||
if(MessageBoxW(GuiGetWindowHandle(), StringUtils::Utf8ToUtf16(msg).c_str(), StringUtils::Utf8ToUtf16(title).c_str(), MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2) == IDYES)
|
||||
setting = GleeBug;
|
||||
BridgeSettingSetUint("Engine", "DebugEngine", setting);
|
||||
}
|
||||
return (DebugEngine)setting;
|
||||
}();
|
||||
|
||||
String fullPath = szProgramDir;
|
||||
fullPath += '\\';
|
||||
|
||||
switch(debugEngine)
|
||||
switch(DbgGetDebugEngine())
|
||||
{
|
||||
case GleeBug:
|
||||
case DebugEngineGleeBug:
|
||||
fullPath += "GleeBug\\TitanEngine.dll";
|
||||
break;
|
||||
case StaticEngine:
|
||||
case DebugEngineStaticEngine:
|
||||
fullPath += "StaticEngine\\TitanEngine.dll";
|
||||
break;
|
||||
case TitanEngine:
|
||||
case DebugEngineTitanEngine:
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -61,9 +61,25 @@ MainWindow::MainWindow(QWidget* parent)
|
|||
ui->setupUi(this);
|
||||
|
||||
// Build information
|
||||
QAction* buildInfo = new QAction(ToDateString(GetCompileDate()), this);
|
||||
buildInfo->setEnabled(false);
|
||||
ui->menuBar->addAction(buildInfo);
|
||||
{
|
||||
const char* debugEngine = []
|
||||
{
|
||||
switch(DbgGetDebugEngine())
|
||||
{
|
||||
case DebugEngineTitanEngine:
|
||||
return "TitanEngine";
|
||||
case DebugEngineGleeBug:
|
||||
return "GleeBug";
|
||||
case DebugEngineStaticEngine:
|
||||
return "StaticEngine";
|
||||
}
|
||||
return "";
|
||||
}();
|
||||
|
||||
QAction* buildInfo = new QAction(tr("%1 (%2)").arg(ToDateString(GetCompileDate())).arg(debugEngine), this);
|
||||
buildInfo->setEnabled(false);
|
||||
ui->menuBar->addAction(buildInfo);
|
||||
}
|
||||
|
||||
// Setup bridge signals
|
||||
connect(Bridge::getBridge(), SIGNAL(updateWindowTitle(QString)), this, SLOT(updateWindowTitleSlot(QString)));
|
||||
|
|
Loading…
Reference in New Issue