MCPcopy Create free account
hub / github.com/beefytech/Beef / BeefStringToString

Method BeefStringToString

IDEHelper/DbgExprEvaluator.cpp:1213–1244  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1211}
1212
1213void DbgExprEvaluator::BeefStringToString(addr_target addr, String& outStr)
1214{
1215 mDebugTarget->GetCompilerSettings();
1216 int objectSize = mDebugTarget->mBfObjectSize;
1217
1218 int32 strLen = 0;
1219 addr_target charPtr = 0;
1220 if (!mDebugTarget->mBfHasLargeStrings)
1221 {
1222 strLen = mDebugger->ReadMemory<int32>(addr + objectSize);
1223 int32 allocSizeAndFlags = mDebugger->ReadMemory<int32>(addr + objectSize + 4);
1224 if ((allocSizeAndFlags & 0x40000000) != 0)
1225 charPtr = mDebugger->ReadMemory<addr_target>(addr + objectSize + 4 + 4);
1226 else
1227 charPtr = addr + objectSize + 4 + 4;
1228 }
1229 else
1230 {
1231 strLen = mDebugger->ReadMemory<int32>(addr + objectSize);
1232 int64 allocSizeAndFlags = mDebugger->ReadMemory<int64>(addr + objectSize + 8);
1233 if ((allocSizeAndFlags & 0x40000000'00000000LL) != 0)
1234 charPtr = mDebugger->ReadMemory<addr_target>(addr + objectSize + 8 + 8);
1235 else
1236 charPtr = addr + objectSize + 4 + 4;
1237 }
1238
1239 if ((strLen > 0) && (strLen < 4096))
1240 {
1241 outStr.Append('?', strLen);
1242 mDebugger->ReadMemory(charPtr, strLen, &outStr[outStr.length() - strLen]);
1243 }
1244}
1245
1246void DbgExprEvaluator::BeefStringToString(const DbgTypedValue& val, String& outStr)
1247{

Callers

nothing calls this directly

Calls 5

GetCompilerSettingsMethod · 0.80
AppendMethod · 0.80
IsBfObjectPtrMethod · 0.80
ReadMemoryMethod · 0.45
lengthMethod · 0.45

Tested by

no test coverage detected