diff options
author | John Harrison <harjohn@google.com> | 2024-01-12 14:12:30 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-12 17:12:30 -0500 |
commit | 40a361acf5ce255054c5b2e5f67a24325bfe0398 (patch) | |
tree | 61fd8ce97334a33cad008790523f395ec7723549 /llvm/docs/tutorial | |
parent | 060505aa0d49f31e6f2fd4e137c76d86f571f66b (diff) | |
download | llvm-40a361acf5ce255054c5b2e5f67a24325bfe0398.zip llvm-40a361acf5ce255054c5b2e5f67a24325bfe0398.tar.gz llvm-40a361acf5ce255054c5b2e5f67a24325bfe0398.tar.bz2 |
[lldb-dap] Updating VariableDescription to use GetDescription() as a fallback. (#77026)
When generating a `display_value` for a variable the current approach
calls `SBValue::GetValue()` and `SBValue::GetSummary()` to generate a
`display_value` for the `SBValue`. However, there are cases where both
of these return an empty string and the fallback is to print a pointer
and type name instead (e.g. `FooBarType @ 0x00321`).
For swift types, lldb includes a langauge runtime plugin that can
generate a description of the object but this is only used with
`SBValue::GetDescription()`.
For example:
```
$ lldb swift-binary
... stop at breakpoint ...
lldb> script
>>> event = lldb.frame.GetValueForVariablePath("event")
>>> print("Value", event.GetValue())
Value None
>>> print("Summary", event.GetSummary())
Summary None
>>> print("Description", event) # __str__ calls SBValue::GetDescription()
Description (main.Event) event = (name = "Greetings", time = 2024-01-04 23:38:06 UTC)
```
With this change, if GetValue and GetSummary return empty then we try
`SBValue::GetDescription()` as a fallback before using the previous
logic of printing `<type> @ <addr>`.
Diffstat (limited to 'llvm/docs/tutorial')
0 files changed, 0 insertions, 0 deletions