1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 19:48:20 +02:00

Displaying main module instead of hot object name in callstack

This commit is contained in:
Brian Fiete 2019-09-28 12:16:15 -07:00
parent 092df41b37
commit d28a804c18

View file

@ -6968,7 +6968,7 @@ String WinDebugger::DbgTypedValueToString(const DbgTypedValue& origTypedValue, c
{ {
auto dbgModule = mDebugTarget->FindDbgModuleForAddress(funcPtr); auto dbgModule = mDebugTarget->FindDbgModuleForAddress(funcPtr);
if (dbgModule != NULL) if (dbgModule != NULL)
demangledName += dbgModule->mDisplayName + "!"; demangledName += dbgModule->GetLinkedModule()->mDisplayName + "!";
demangledName += StrFormat("0x%@", funcPtr); demangledName += StrFormat("0x%@", funcPtr);
} }
@ -10092,10 +10092,11 @@ String WinDebugger::GetThreadInfo()
{ {
if (subProgram->mLineInfo != NULL) if (subProgram->mLineInfo != NULL)
{ {
auto module = subProgram->mCompileUnit->mDbgModule; DbgModule* module = subProgram->mCompileUnit->mDbgModule;
if (module->mDisplayName.length() > 0) DbgModule* linkedModule = module->GetLinkedModule();
if (linkedModule->mDisplayName.length() > 0)
{ {
locString = module->mDisplayName + "!" + subProgram->ToString(); locString = linkedModule->mDisplayName + "!" + subProgram->ToString();
if (!hadThreadName) if (!hadThreadName)
threadName = module->mDisplayName + " thread"; threadName = module->mDisplayName + " thread";
} }
@ -10108,17 +10109,18 @@ String WinDebugger::GetThreadInfo()
} }
} }
auto module = mDebugTarget->FindDbgModuleForAddress(registers.GetPC()); DbgModule* module = mDebugTarget->FindDbgModuleForAddress(registers.GetPC());
if (module == NULL) if (module == NULL)
{ {
isInvalid = true; isInvalid = true;
break; break;
} }
DbgModule* linkedModule = module->GetLinkedModule();
appendAddr = (addr_target)registers.GetPC(); appendAddr = (addr_target)registers.GetPC();
locString = module->mDisplayName + "!" + EncodeDataPtr((addr_target)registers.GetPC(), true); locString = linkedModule->mDisplayName + "!" + EncodeDataPtr((addr_target)registers.GetPC(), true);
if (!hadThreadName) if (!hadThreadName)
threadName = module->mDisplayName + " thread"; threadName = linkedModule->mDisplayName + " thread";
if ((mActiveThread == mExplicitStopThread) && (mActiveBreakpoint != NULL)) if ((mActiveThread == mExplicitStopThread) && (mActiveBreakpoint != NULL))
{ {
@ -10152,9 +10154,12 @@ String WinDebugger::GetThreadInfo()
DbgModule* dwarf; DbgModule* dwarf;
if (mDebugTarget->FindSymbolAt(appendAddr, &symbolName, &offset, &dwarf)) if (mDebugTarget->FindSymbolAt(appendAddr, &symbolName, &offset, &dwarf))
{ {
DbgModule* linkedModule = dwarf->GetLinkedModule();
String demangledName = BfDemangler::Demangle(symbolName, DbgLanguage_Unknown); String demangledName = BfDemangler::Demangle(symbolName, DbgLanguage_Unknown);
if (!dwarf->mDisplayName.empty()) if (!linkedModule->mDisplayName.empty())
demangledName = dwarf->mDisplayName + "!" + demangledName; {
demangledName = linkedModule->mDisplayName + "!" + demangledName;
}
locString = demangledName + StrFormat("+0x%X", offset); locString = demangledName + StrFormat("+0x%X", offset);
} }
} }
@ -10733,8 +10738,9 @@ String WinDebugger::GetStackFrameInfo(int stackFrameIdx, intptr* addr, String* o
String name = wdStackFrame->mSubProgram->ToString(); String name = wdStackFrame->mSubProgram->ToString();
DbgModule* dbgModule = wdStackFrame->mSubProgram->mCompileUnit->mDbgModule; DbgModule* dbgModule = wdStackFrame->mSubProgram->mCompileUnit->mDbgModule;
if (!dbgModule->mDisplayName.empty()) DbgModule* linkedModule = dbgModule->GetLinkedModule();
name = dbgModule->mDisplayName + "!" + name; if (!linkedModule->mDisplayName.empty())
name = linkedModule->mDisplayName + "!" + name;
return name; return name;
} }
@ -10790,8 +10796,9 @@ String WinDebugger::GetStackFrameInfo(int stackFrameIdx, intptr* addr, String* o
} }
DbgModule* dbgModule = dwSubprogram->mCompileUnit->mDbgModule; DbgModule* dbgModule = dwSubprogram->mCompileUnit->mDbgModule;
if (!dbgModule->mDisplayName.empty()) DbgModule* linkedModule = dbgModule->GetLinkedModule();
demangledName = dbgModule->mDisplayName + "!" + demangledName; if (!linkedModule->mDisplayName.empty())
demangledName = linkedModule->mDisplayName + "!" + demangledName;
if ((dwSubprogram->mHotReplaceKind == DbgSubprogram::HotReplaceKind_Replaced) || (dwSubprogram->mHotReplaceKind == DbgSubprogram::HotReplaceKind_Invalid)) if ((dwSubprogram->mHotReplaceKind == DbgSubprogram::HotReplaceKind_Replaced) || (dwSubprogram->mHotReplaceKind == DbgSubprogram::HotReplaceKind_Invalid))
demangledName = "#" + demangledName; demangledName = "#" + demangledName;
@ -10848,23 +10855,26 @@ String WinDebugger::GetStackFrameInfo(int stackFrameIdx, intptr* addr, String* o
return outName; return outName;
} }
} }
DbgModule* linkedModule = dbgModule->GetLinkedModule();
String demangledName = BfDemangler::Demangle(symbolName, DbgLanguage_Unknown); String demangledName = BfDemangler::Demangle(symbolName, DbgLanguage_Unknown);
if (!dbgModule->mDisplayName.empty()) if (!linkedModule->mDisplayName.empty())
demangledName = dbgModule->mDisplayName + "!" + demangledName; demangledName = linkedModule->mDisplayName + "!" + demangledName;
return demangledName + StrFormat("+0x%X", offset); return demangledName + StrFormat("+0x%X", offset);
} }
} }
DbgModule* dbgModule = mDebugTarget->FindDbgModuleForAddress(pcAddress); DbgModule* dbgModule = mDebugTarget->FindDbgModuleForAddress(pcAddress);
DbgModule* linkedModule = NULL;
if (dbgModule != NULL) if (dbgModule != NULL)
{ {
linkedModule = dbgModule->GetLinkedModule();
if (dbgModule->HasPendingDebugInfo()) if (dbgModule->HasPendingDebugInfo())
*outFlags |= FrameFlags_HasPendingDebugInfo; *outFlags |= FrameFlags_HasPendingDebugInfo;
} }
String outName = EncodeDataPtr(pcAddress, true); String outName = EncodeDataPtr(pcAddress, true);
if ((dbgModule != NULL) && (!dbgModule->mDisplayName.empty())) if ((linkedModule != NULL) && (!linkedModule->mDisplayName.empty()))
outName = dbgModule->mDisplayName + "!" + outName; outName = linkedModule->mDisplayName + "!" + outName;
return outName; return outName;
} }
@ -11130,7 +11140,7 @@ String WinDebugger::DisassembleAtRaw(intptr inAddress)
{ {
outSymbol = BfDemangler::Demangle(outSymbol, DbgLanguage_Unknown); outSymbol = BfDemangler::Demangle(outSymbol, DbgLanguage_Unknown);
if ((symDWARF != NULL) && (!symDWARF->mDisplayName.empty())) if ((symDWARF != NULL) && (!symDWARF->mDisplayName.empty()))
outSymbol = symDWARF->mDisplayName + "!" + outSymbol; outSymbol = symDWARF->GetLinkedModule()->mDisplayName + "!" + outSymbol;
result += "T " + outSymbol + ":\n"; result += "T " + outSymbol + ":\n";
} }
} }