DBG: some small cosmetic changes to the debugger/database
This commit is contained in:
parent
f6e747ec25
commit
601117d303
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
void DbSave(DbLoadSaveType saveType);
|
||||
void DbLoad(DbLoadSaveType loadType);
|
||||
void DbClose();
|
||||
void DbSetPath(const char* Directory, const char* ModulePath);
|
||||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Reference in New Issue