================ @@ -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); + if (error.Success() || bytes_read > 0) { + data.SetData(data_sp); + return bytes_read; + } ---------------- igorkudrin wrote:
I think it can still be factored out, even without the `else` branch. The only difference will be that `data` will be updated if we don't have a target, and that seems negligible. Thanks for the idea. https://github.com/llvm/llvm-project/pull/139196 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits