Skip to content

Commit

Permalink
[LLDB] Clarifying the documentation for variable formatting wrt to qu…
Browse files Browse the repository at this point in the history
…alifiers and adding a test that demonstrates this

When looking up user specified formatters qualifiers are removed from types before matching,
I have added a clarifying example to the document and added an example to a relevant test to demonstrate this behavior.

Differential Revision: https://reviews.llvm.org/D99827
  • Loading branch information
shafik committed Apr 7, 2021
1 parent 56ea2e2 commit 79ac5bb
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 0 deletions.
14 changes: 14 additions & 0 deletions lldb/docs/use/variable.rst
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,20 @@ which provides the desired output:
(C) c = {0x03 0x00 0x00 0x00}
(D) d = 4

Note, that qualifiers such as const and volatile will be stripped when matching types for example:

::

(lldb) frame var x y z
(int) x = 1
(const int) y = 2
(volatile int) z = 4
(lldb) type format add -f hex int
(lldb) frame var x y z
(int) x = 0x00000001
(const int) y = 0x00000002
(volatile int) z = 0x00000004

Two additional options that you will want to look at are --skip-pointers (-p)
and --skip-references (-r). These two options prevent LLDB from applying a
format for type T to values of type T* and T& respectively.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,12 @@ def cleanup():
self.expect("frame variable a_simple_object", matching=True,
substrs=['x=0x00000003'])

self.expect_var_path("constInt", value='0x0000002a')

self.expect_var_path("volatileInt", value='0x0000002b')

self.expect_var_path("constVolatileInt", value='0x0000002c')

# check that we can correctly cap the number of children shown
self.runCmd("settings set target.max-children-count 5")

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,9 @@ int main (int argc, const char * argv[])
{

int iAmInt = 9;
const int constInt = 42;
volatile int volatileInt = 43;
const volatile int constVolatileInt = 44;

i_am_cool cool_boy(1,0.5,3);
i_am_cooler cooler_boy(1,2,0.1,0.2,'A','B');
Expand Down

0 comments on commit 79ac5bb

Please sign in to comment.