[lldb-dev] Watching the current frame locals

Eran Ifrah eran.ifrah at gmail.com
Sun Apr 6 12:26:02 PDT 2014


One of the local variables was 'const char*' so I would expect it to have a
value and others were of type of 'wxString'
In the UI I expanded all the way to the _M_data which is of type 'wchar_t*'
- and still nothing

Eran



On Sun, Apr 6, 2014 at 9:13 PM, Enrico Granata <egranata at apple.com> wrote:

> What is the data type of your variables?
>
> If they are aggregate types (structs, classes, ...) they won't have a
> value.
>
> Only basic types (int, float, char, ..., you get the idea - and pointers)
> have a value.
>
> For other types, they might have a summary, or they might have children,
> but definitely no value.
>
> Sent from the iPhone of
> *Enrico Granata* <egranata@🍎.com>
>
> On Apr 6, 2014, at 7:02 AM, Eran Ifrah <eran.ifrah at gmail.com> wrote:
>
> Hello all,
>
> I am at a phase where I want to display the current frame local variables
> whenever the debugger "stops"
> I was able to get a list of the selected frame's variables in the
> following manner:
>
> lldb::SBFrame frame =
> m_target.GetProcess().GetSelectedThread().GetSelectedFrame();
> ...
> lldb::SBValueList args = frame.GetBlock().GetVariables(m_target, true,
> true, false);
> for(size_t i=0; i<args.GetSize(); ++i) {
>         lldb::SBValue value = args.GetValueAtIndex(i);
>         if ( value.IsValid() ) {
>             LLDBLocalVariable::Ptr_t var( new LLDBLocalVariable(value) );
>             locals.push_back( var );
>         }
> }
>
> Now, LLDBLocalVariable is a thin wrapper class for UI purposes.
> What it does is basically copies values from lldb::SBValue:
>
> LLDBLocalVariable::LLDBLocalVariable(lldb::SBValue value) {
>     SetName( value.GetName() );
>     SetType( value.GetTypeName() );
>     SetValue( value.GetValue() ); // always returns null
>     ... // code that handles children of value
> }
>
> value.GetName() and value.GetTypeName() are working as expected (i.e. I
> get the correct type name and its name)
> However, I can't get the value as "string". I was naive enough to think
> that const char* SBValue::GetValue() will do the trick... but this always
> returns NULL.
>
> Any suggestions on what am I doing wrong? an example on how to extract the
> variable's value in string format will be really appreciated
>
> Thanks,
>
> P.S.
> This is Linux 13.10 / 64 bit
> Self compiled lldb
>
> --
> Eran Ifrah
> Author of codelite, a cross platform open source C/C++ IDE:
> http://www.codelite.org
> wxCrafter, a wxWidgets RAD: http://wxcrafter.codelite.org
>
> _______________________________________________
> lldb-dev mailing list
> lldb-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
>
>


-- 
Eran Ifrah
Author of codelite, a cross platform open source C/C++ IDE:
http://www.codelite.org
wxCrafter, a wxWidgets RAD: http://wxcrafter.codelite.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20140406/8c4ec566/attachment.html>


More information about the lldb-dev mailing list