<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">Hello all,</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">

I am at a phase where I want to display the current frame local variables whenever the debugger "stops"</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">I was able to get a list of the selected frame's variables in the following manner:</div>

<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default"><font face="courier new, monospace">lldb::SBFrame frame = m_target.GetProcess().GetSelectedThread().GetSelectedFrame();<br>

</font></div><div class="gmail_default"><font face="courier new, monospace">...</font></div><div class="gmail_default"><font face="courier new, monospace">lldb::SBValueList args = frame.GetBlock().GetVariables(m_target, true, true, false);<br>

</font></div><div><div class="gmail_default"><font face="courier new, monospace">for(size_t i=0; i<args.GetSize(); ++i) {</font></div><div class="gmail_default"><font face="courier new, monospace">        lldb::SBValue value = args.GetValueAtIndex(i);</font></div>

<div class="gmail_default"><font face="courier new, monospace">        if ( value.IsValid() ) {</font></div><div class="gmail_default"><font face="courier new, monospace">            LLDBLocalVariable::Ptr_t var( new LLDBLocalVariable(value) );</font></div>

<div class="gmail_default"><font face="courier new, monospace">            locals.push_back( var );</font></div><div class="gmail_default"><font face="courier new, monospace">        }</font></div><div class="gmail_default">

<font face="courier new, monospace">}<span style="font-size:small"></span></font></div><br></div><div><div class="gmail_default" style="font-size:small"><font face="verdana, sans-serif">Now, LLDBLocalVariable is a thin wrapper class for UI purposes.</font></div>

<div class="gmail_default" style="font-size:small"><font face="verdana, sans-serif">What it does is basically copies values from lldb::SBValue:</font></div><div class="gmail_default" style="font-size:small"><font face="verdana, sans-serif"><br>

</font></div><div class="gmail_default" style="font-size:small"><font face="courier new, monospace">LLDBLocalVariable::LLDBLocalVariable(lldb::SBValue value) {<br></font></div><div class="gmail_default"><div class="gmail_default">

<font face="courier new, monospace">    SetName( value.GetName() );</font></div><div class="gmail_default"><font face="courier new, monospace">    SetType( value.GetTypeName() );</font></div><div class="gmail_default"><font face="courier new, monospace">    SetValue( value.GetValue() ); // always returns null</font></div>

<div class="gmail_default"><font face="courier new, monospace">    ... // code that handles children of value</font></div><div class="gmail_default"><font face="courier new, monospace">}</font></div><div class="gmail_default" style="font-family:verdana,sans-serif">

<br></div></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">value.GetName() and value.GetTypeName() are working as expected (i.e. I get the correct type name and its name)</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">

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.</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">

<br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">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</div>

<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">Thanks,</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">

<br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">P.S.</div></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">This is Linux 13.10 / 64 bit</div>

<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">Self compiled lldb</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div>-- <br><div dir="ltr">
Eran Ifrah<br>
Author of codelite, a cross platform open source C/C++ IDE: <a href="http://www.codelite.org" target="_blank">http://www.codelite.org</a><br><div>wxCrafter, a wxWidgets RAD: http://<a href="http://wxcrafter.codelite.org" target="_blank">wxcrafter.codelite.org</a></div>

</div>
</div>