Skip to content
  • Greg Clayton's avatar
    Fixed an expression parsing issue where if you were stopped somewhere without · 8f92f0a3
    Greg Clayton authored
    debug information and you evaluated an expression, a crash would occur as a
    result of an unchecked pointer.
    
    Added the ability to get the expression path for a ValueObject. For a rectangle
    point child "x" the expression path would be something like: "rect.top_left.x".
    This will allow GUI and command lines to get ahold of the expression path for
    a value object without having to explicitly know about the hierarchy. This
    means the ValueObject base class now has a "ValueObject *m_parent;" member.
    All ValueObject subclasses now correctly track their lineage and are able
    to provide value expression paths as well.
    
    Added a new "--flat" option to the "frame variable" to allow for flat variable
    output. An example of the current and new outputs:
    
    (lldb) frame variable 
    argc = 1
    argv = 0x00007fff5fbffe80
    pt = {
      x = 2
      y = 3
    }
    rect = {
      bottom_left = {
        x = 1
        y = 2
      }
      top_right = {
        x = 3
        y = 4
      }
    }
    (lldb) frame variable --flat 
    argc = 1
    argv = 0x00007fff5fbffe80
    pt.x = 2
    pt.y = 3
    rect.bottom_left.x = 1
    rect.bottom_left.y = 2
    rect.top_right.x = 3
    rect.top_right.y = 4
    
    
    As you can see when there is a lot of hierarchy it can help flatten things out.
    Also if you want to use a member in an expression, you can copy the text from
    the "--flat" output and not have to piece it together manually. This can help
    when you want to use parts of the STL in expressions:
    
    (lldb) frame variable --flat
    argc = 1
    argv = 0x00007fff5fbffea8
    hello_world._M_dataplus._M_p = 0x0000000000000000
    (lldb) expr hello_world._M_dataplus._M_p[0] == '\0'
    
    llvm-svn: 116532
    8f92f0a3
Loading