> On Feb 28, 2018, at 7:14 PM, Jim Ingham <jing...@apple.com> wrote:
> 
> Jonas,
> 
> What are you using to inspect the this pointer?

Normally, the Xcode debugger UI.

>  You can use "frame variable" (the equivalent of gdb's "info locals") which 
> just relies on debug info or the expression evaluator e.g. "print".  Do both 
> methods show the same problem?

(lldb) frame variable this
(Scripting::UnityEngine::Transform *) this = 0x000000010fe2eb20

That gives me the wrong namespace

(lldb) print this
(Scripting::UnityEngine::Transform *) $4 = 0x000000010fe2eb20

That also gives me the wrong namespace

But:

(lldb) print *this
(Transform) $5 = {
[...]

gives me the correct (global) namespace.

Also:

(lldb) frame variable -d no-dynamic-values this
(Transform *) this = 0x000000010fe2eb20

gives me the correct namespace.

> 
> Also note that lldb by default will try to discern the full dynamic type of 
> the variables it prints.  You can disable this by doing:
> 
> (lldb) expr -d no-dynamic-values -- this
> 
> or equivalently:
> 
> (lldb) frame variable -d no-dynamic-values this
> 
> Is it the dynamic value resolution that's causing the incorrect printing?

Yes, both of those above give me the correct types!

Now, this is already very helpful - Thank you! 
This means I can get correct values using the lldb console. If there was some 
way to make the Xcode UI show the correct values, that would be even better.

jonas

> 
> Jim
> 
> 
> 
> 
>> On Feb 28, 2018, at 3:03 AM, jonas echterhoff via lldb-dev 
>> <lldb-dev@lists.llvm.org> wrote:
>> 
>> 
>>> On Feb 28, 2018, at 11:19 AM, Dmitry Antipov <danti...@nvidia.com> wrote:
>>> 
>>> On 02/28/2018 11:31 AM, jonas echterhoff via lldb-dev wrote:
>>> 
>>>> I'm using lldb-900.0.64.
>>>          ^^^^^^^^^^^^^^
>>>          ??????????????
>>> Latest official release is 5.0.1; also there are 6.0.0 (at -rc3, the next 
>>> release)
>>> and 7.0.0 (a.k.a SVN trunk). What's the 'version' output of your LLDB 
>>> prompt?
>> 
>> It is what I posted:
>> 
>> jechter$ lldb --version
>> lldb-900.0.64
>> Swift-4.0
>> 
>> Maybe Apple uses a different versioning scheme for lldb distributed with 
>> their toolchains?
>>> 
>>>> Unfortunately, I have not yet succeeded in coming up with a small, 
>>>> independent repro case which shows this problem.
>>> 
>>> IIUC this is it:
>> 
>> [...]
>> 
>>> Here 'this' is different between calls to obj2.f () and obj2.g () 
>>> (0x00007fffffffdb50 vs.
>>> 0x00007fffffffdb40), and objects are shown as different as well - {111, 
>>> 222} vs. {333, 444}.
>> 
>> Thanks. What you are showing there seems very peculiar. 
>> 
>> But I don't think it's the same problem as I have (and also, using the same 
>> steps on my machine does not repro the problem you showed - I get the same 
>> value for "this" and it's members between the calls to S::B::f and S::B::g).
>> 
>> My problem was not about showing a wrong object (My "this" pointer value was 
>> correct), but about showing a wrong type representation of the correct 
>> object data.
>> 
>> jonas
>> 
>> _______________________________________________
>> lldb-dev mailing list
>> lldb-dev@lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
> 

_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to