> On Nov 30, 2014, at 4:35 AM, Jose H <[email protected]> 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
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev