[lldb-dev] Watching the current frame locals
Eran Ifrah
eran.ifrah at gmail.com
Sun Apr 6 07:02:02 PDT 2014
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20140406/3486e5aa/attachment.html>
More information about the lldb-dev
mailing list