> On Nov 30, 2014, at 4:35 AM, Jose H <jose.francisco.he...@gmail.com> wrote:
> 
> Just being curious(and not loving the fact of using something without
> understanding it, what the last argument of frame.GetVariable does?.
> 
> It says:
> DynamicValueType use_dynamic
> 
> In the c++ documentation it says I could use those values:
> eDynamicCanRunTarget, eNoDynamicValues, eDynamicCanRunTarget,
> eDynamicDontRunTarget
> 
> What dynamic value type means?. It means c++ auto or something like a
> template value?.
> 

Imagine this situation:

class Foo { public: virtual void something() ... };
class Bar: public Foo { … };

Foo *aFoo = new Bar();

The declared type of “aFoo” is Foo*, but its actual type at runtime is Bar*
This “actual type at runtime” notion is what LLDB calls the “dynamic type” (vs. 
the declared, aka “static” type)

You can tell LLDB whether you want the static or the dynamic type when 
resolving a variable. And you can control whether LLDB is allowed to run code 
in the inferior process to perform this resolution
As far as I know, there are no cases in which LLDB actually needs to run code 
to perform this resolution (it used to be the case historically), except that 
we cheat, and we will run code even if you say “Don’t run” to fetch a table of 
classes from the ObjC runtime
We are aware that this is bending the rules a little, of course.

Thanks,
- Enrico
📩 egranata@.com ☎️ 27683




_______________________________________________
lldb-dev mailing list
lldb-dev@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to