[Lldb-commits] [lldb] [lldb][core] Fix getting summary of a variable pointing to r/o memory (PR #139196)
David Spickett via lldb-commits
lldb-commits at lists.llvm.org
Fri May 9 02:40:57 PDT 2025
================
@@ -735,14 +735,25 @@ size_t ValueObject::GetPointeeData(DataExtractor &data, uint32_t item_idx,
case eAddressTypeLoad: {
ExecutionContext exe_ctx(GetExecutionContextRef());
Process *process = exe_ctx.GetProcessPtr();
- if (process) {
+ if (process && process->IsLiveDebugSession()) {
heap_buf_ptr->SetByteSize(bytes);
size_t bytes_read = process->ReadMemory(
addr + offset, heap_buf_ptr->GetBytes(), bytes, error);
if (error.Success() || bytes_read > 0) {
data.SetData(data_sp);
return bytes_read;
}
+ } else if (Target *target = exe_ctx.GetTargetPtr()) {
+ Address target_addr;
+ target_addr.SetLoadAddress(addr + offset, target);
+ heap_buf_ptr->SetByteSize(bytes);
+ size_t bytes_read =
+ target->ReadMemory(target_addr, heap_buf_ptr->GetBytes(), bytes,
+ error, /*force_live_memory=*/true);
----------------
DavidSpickett wrote:
force_live_memory being true seems backwards, but I suppose that it has no effect here because we know we're not in a live session.
Should it be false just for consistency?
Maybe not, because this `else if` executes if either `process` is null, or we are not in a live process. If it's the former condition then we do want to force live memory.
Is that your logic here?
https://github.com/llvm/llvm-project/pull/139196
More information about the lldb-commits
mailing list