From 601117d3038cdca03991fc094320044febc922d1 Mon Sep 17 00:00:00 2001 From: mrexodia Date: Wed, 30 Dec 2015 04:52:10 +0100 Subject: [PATCH] DBG: some small cosmetic changes to the debugger/database --- src/dbg/database.cpp | 34 ++++++++++++++++------------------ src/dbg/database.h | 16 ++++++++-------- src/dbg/debugger.cpp | 11 +++++------ src/dbg/instruction.cpp | 4 ++-- src/dbg/x64_dbg.cpp | 4 ++-- 5 files changed, 33 insertions(+), 36 deletions(-) diff --git a/src/dbg/database.cpp b/src/dbg/database.cpp index bdd209ba..199f7cf2 100644 --- a/src/dbg/database.cpp +++ b/src/dbg/database.cpp @@ -14,6 +14,7 @@ #include "function.h" #include "loop.h" #include "commandline.h" +#include "database.h" /** \brief Directory where program databases are stored (usually in \db). UTF-8 encoding. @@ -25,26 +26,19 @@ char dbbasepath[deflen]; */ char dbpath[deflen]; -enum LOAD_SAVE_DB_TYPE -{ - COMMAND_LINE_ONLY, - ALL_BUT_COMMAND_LINE, - ALL -}; - -void DBSave(LOAD_SAVE_DB_TYPE saveType) +void DbSave(DbLoadSaveType saveType) { dprintf("Saving database..."); DWORD ticks = GetTickCount(); JSON root = json_object(); // Save only command line - if(saveType == COMMAND_LINE_ONLY || saveType == ALL) + if(saveType == DbLoadSaveType::CommandLine || saveType == DbLoadSaveType::All) { CmdLineCacheSave(root); } - if(saveType == ALL_BUT_COMMAND_LINE || saveType == ALL) + if(saveType == DbLoadSaveType::DebugData || saveType == DbLoadSaveType::All) { CommentCacheSave(root); LabelCacheSave(root); @@ -95,13 +89,16 @@ void DBSave(LOAD_SAVE_DB_TYPE saveType) json_decref(root); //free root } -void DBLoad(LOAD_SAVE_DB_TYPE loadType) +void DbLoad(DbLoadSaveType loadType) { // If the file doesn't exist, there is no DB to load if(!FileExists(dbpath)) return; - dprintf("Loading database..."); + if(loadType == DbLoadSaveType::CommandLine) + dputs("Loading commandline..."); + else + dprintf("Loading database..."); DWORD ticks = GetTickCount(); // Multi-byte (UTF8) file path converted to UTF16 @@ -159,12 +156,12 @@ void DBLoad(LOAD_SAVE_DB_TYPE loadType) } // Load only command line - if(loadType == COMMAND_LINE_ONLY || loadType == ALL) + if(loadType == DbLoadSaveType::CommandLine || loadType == DbLoadSaveType::All) { CmdLineCacheLoad(root); } - if(loadType == ALL_BUT_COMMAND_LINE || loadType == ALL) + if(loadType == DbLoadSaveType::DebugData || loadType == DbLoadSaveType::All) { // Finally load all structures CommentCacheLoad(root); @@ -181,12 +178,13 @@ void DBLoad(LOAD_SAVE_DB_TYPE loadType) // Free root json_decref(root); - dprintf("%ums\n", GetTickCount() - ticks); + if(loadType != DbLoadSaveType::CommandLine) + dprintf("%ums\n", GetTickCount() - ticks); } -void DBClose() +void DbClose() { - DBSave(ALL); + DbSave(DbLoadSaveType::All); CommentClear(); LabelClear(); BookmarkClear(); @@ -196,7 +194,7 @@ void DBClose() PatchClear(); } -void DBSetPath(const char* Directory, const char* ModulePath) +void DbSetPath(const char* Directory, const char* ModulePath) { // Initialize directory if it was only supplied if(Directory) diff --git a/src/dbg/database.h b/src/dbg/database.h index 0658afd1..a3dc98e8 100644 --- a/src/dbg/database.h +++ b/src/dbg/database.h @@ -2,14 +2,14 @@ #include "_global.h" -enum LOAD_SAVE_DB_TYPE +enum class DbLoadSaveType { - COMMAND_LINE_ONLY, - ALL_BUT_COMMAND_LINE, - ALL + CommandLine, + DebugData, + All }; -void DBSave(LOAD_SAVE_DB_TYPE saveType); -void DBLoad(LOAD_SAVE_DB_TYPE loadType); -void DBClose(); -void DBSetPath(const char* Directory, const char* ModulePath); \ No newline at end of file +void DbSave(DbLoadSaveType saveType); +void DbLoad(DbLoadSaveType loadType); +void DbClose(); +void DbSetPath(const char* Directory, const char* ModulePath); \ No newline at end of file diff --git a/src/dbg/debugger.cpp b/src/dbg/debugger.cpp index 1d7434cf..1afafa05 100644 --- a/src/dbg/debugger.cpp +++ b/src/dbg/debugger.cpp @@ -663,8 +663,7 @@ static void cbCreateProcess(CREATE_PROCESS_DEBUG_INFO* CreateProcessInfo) GuiDumpAt(MemFindBaseAddr(GetContextDataEx(CreateProcessInfo->hThread, UE_CIP), 0) + PAGE_SIZE); //dump somewhere // Init program database - DBSetPath(nullptr, szFileName); - DBLoad(ALL_BUT_COMMAND_LINE); + DbLoad(DbLoadSaveType::DebugData); SafeSymSetOptions(SYMOPT_DEBUG | SYMOPT_LOAD_LINES | SYMOPT_ALLOW_ABSOLUTE_SYMBOLS | SYMOPT_FAVOR_COMPRESSED | SYMOPT_IGNORE_NT_SYMPATH); GuiSymbolLogClear(); @@ -1155,8 +1154,8 @@ DWORD WINAPI threadDebugLoop(void* lpParameter) strcpy_s(szFileName, init->exe); // Load command line if it exists in DB - DBSetPath(nullptr, szFileName); - DBLoad(COMMAND_LINE_ONLY); + DbSetPath(nullptr, szFileName); + DbLoad(DbLoadSaveType::CommandLine); if(!isCmdLineEmpty()) { @@ -1240,7 +1239,7 @@ DWORD WINAPI threadDebugLoop(void* lpParameter) //message the user/do final stuff RemoveAllBreakPoints(UE_OPTION_REMOVEALL); //remove all breakpoints //cleanup - DBClose(); + DbClose(); ModClear(); ThreadClear(); SymClearMemoryCache(); @@ -1508,7 +1507,7 @@ DWORD WINAPI threadAttachLoop(void* lpParameter) //message the user/do final stuff RemoveAllBreakPoints(UE_OPTION_REMOVEALL); //remove all breakpoints //cleanup - DBClose(); + DbClose(); ModClear(); ThreadClear(); SymClearMemoryCache(); diff --git a/src/dbg/instruction.cpp b/src/dbg/instruction.cpp index 813bc359..8b0086c9 100644 --- a/src/dbg/instruction.cpp +++ b/src/dbg/instruction.cpp @@ -416,14 +416,14 @@ CMDRESULT cbInstrBookmarkDel(int argc, char* argv[]) CMDRESULT cbInstrLoaddb(int argc, char* argv[]) { - DBLoad(ALL); + DbLoad(DbLoadSaveType::All); GuiUpdateAllViews(); return STATUS_CONTINUE; } CMDRESULT cbInstrSavedb(int argc, char* argv[]) { - DBSave(ALL); + DbSave(DbLoadSaveType::All); return STATUS_CONTINUE; } diff --git a/src/dbg/x64_dbg.cpp b/src/dbg/x64_dbg.cpp index cff16165..ae8a0253 100644 --- a/src/dbg/x64_dbg.cpp +++ b/src/dbg/x64_dbg.cpp @@ -284,7 +284,7 @@ extern "C" DLL_EXPORT const char* _dbg_dbginit() setalloctrace(alloctrace); // Create database directory in the local debugger folder - DBSetPath(StringUtils::sprintf("%s\\db", dir).c_str(), nullptr); + DbSetPath(StringUtils::sprintf("%s\\db", dir).c_str(), nullptr); char szLocalSymbolPath[MAX_PATH] = ""; strcpy_s(szLocalSymbolPath, dir); @@ -318,7 +318,7 @@ extern "C" DLL_EXPORT const char* _dbg_dbginit() } } } - dputs(szSymbolCachePath); + dprintf("Symbol Path: %s\n", szSymbolCachePath); SetCurrentDirectoryW(StringUtils::Utf8ToUtf16(dir).c_str()); dputs("Allocating message stack..."); gMsgStack = MsgAllocStack();