Remove folder from DLL breakpoints

This commit is contained in:
Duncan Ogilvie 2024-10-07 22:51:54 +02:00
parent bb54515ef2
commit 49c87f21d3
2 changed files with 16 additions and 5 deletions

View File

@ -974,6 +974,10 @@ void BpCacheLoad(JSON Root, bool migrateCommandCondition)
}
else
{
// NOTE: full paths in DLL breakpoints are not supported
auto slashIdx = breakpoint.module.rfind('\\');
if(slashIdx != String::npos)
breakpoint.module = breakpoint.module.substr(slashIdx + 1);
key = BpGetDLLBpAddr(breakpoint.module.c_str());
breakpoint.addr = key;
}
@ -1118,7 +1122,7 @@ std::vector<BP_REF> BpRefList()
BpRefDll(ref, bp.module.c_str());
break;
case BPEXCEPTION:
BpRefException(ref, bp.addr);
BpRefException(ref, (unsigned int)bp.addr);
break;
default:
ref.type = BpTypeToBridge(bp.type);

View File

@ -958,7 +958,14 @@ bool cbDebugBpDll(int argc, char* argv[])
{
if(IsArgumentsLessThan(argc, 2))
return false;
_strlwr_s(argv[1], strlen(argv[1]) + 1); //NOTE: does not really work on unicode strings
String mod;
auto slashIdx = strrchr(argv[1], '\\');
if(slashIdx != nullptr)
mod = StringUtils::ToLower(slashIdx + 1);
else
mod = StringUtils::ToLower(argv[1]);
DWORD type = UE_ON_LIB_ALL;
if(argc > 2)
{
@ -978,17 +985,17 @@ bool cbDebugBpDll(int argc, char* argv[])
bool singleshoot = false;
if(argc > 3)
singleshoot = true;
if(!BpNewDll(argv[1], true, singleshoot, type, ""))
if(!BpNewDll(mod.c_str(), true, singleshoot, type, ""))
{
dputs(QT_TRANSLATE_NOOP("DBG", "Error creating Dll breakpoint! (BpNewDll)"));
return false;
}
if(!dbgsetdllbreakpoint(argv[1], type, singleshoot))
if(!dbgsetdllbreakpoint(mod.c_str(), type, singleshoot))
{
dputs(QT_TRANSLATE_NOOP("DBG", "Error creating Dll breakpoint! (LibrarianSetBreakPoint)"));
return false;
}
dprintf(QT_TRANSLATE_NOOP("DBG", "Dll breakpoint set on \"%s\"!\n"), argv[1]);
dprintf(QT_TRANSLATE_NOOP("DBG", "Dll breakpoint set on \"%s\"!\n"), mod.c_str());
DebugUpdateBreakpointsViewAsync();
return true;
}