<div dir="ltr">Note that I also tried this with a a linux / DWARF executable and had the same result.</div><br><div class="gmail_quote"><div dir="ltr">On Fri, Oct 26, 2018 at 3:21 AM Zachary Turner <<a href="mailto:zturner@google.com">zturner@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello,<div><br></div><div>I've got this code:<div><br></div><div><div>class Class {</div><div>  int x = 0;</div><div>  short y = 1;</div><div>  char z = 'z';</div><div>} C;</div><div><br></div><div>int main(int argc, char **argv) {</div><div>  __debugbreak();</div><div>  return 0;</div><div>}</div></div><div><br></div><div>and I run the following LLDB session:</div><div><br></div><div><div>lldb.exe -f foo.exe</div><div>(lldb) target create "foo.exe"<br></div><div>Current executable set to 'foo.exe' (x86_64).</div><div>(lldb) run</div><div>Process 24604 launched: 'foo.exe' (x86_64)</div><div>Process 24604 stopped</div><div>* thread #1, stop reason = Exception 0x80000003 encountered at address 0x7ff70a0b1017</div><div>    frame #0: 0x00007ff70a0b1018 foo.exe`main(argc=-1123614720, argv=0x00007ff70a0b1000) at foo.cpp:19</div><div>   16</div><div>   17   int main(int argc, char **argv) {</div><div>   18     __debugbreak();</div><div>-> 19     return 0;</div><div>   20   }</div><div>(lldb) p C</div><div>(Class) $0 =</div><div>(lldb)</div></div><div><br></div><div>The issue is, of course, that it doesn't display the members of the class C.  The type support in PDB is fine, so it's not that.  For example:</div><div><br></div><div><div>(lldb) type lookup Class</div><div>class Class {</div><div>    int x;</div><div>    short y;</div><div>    char z;</div><div>}</div></div><div><br></div><div>And it can definitely find C in memory:</div><div><br></div><div>(lldb) p &C<br></div><div><div>(Class *) $1 = 0x00007ff70a0b3000</div></div><div><br></div><div>Instead, the issue seems to be related to the value object formatter.  I tried to track this down but this code is pretty complicated.  However, there are two issues that I was able to discover:</div><div><br></div><div>1) It's using the objective C class formatter.  Obviously I'm not using objective C, so that seems wrong right off the bat.  Specifically, the "Synthetic children front end" is the ObjCClassSyntheticChildrenFrontEnd.  </div><div><br></div><div>2) Because of #1, when it calls CalculateNumChildren() in Cocoa.cpp, it returns 0.  I would expect it to be calling some function somewhere that returns 3, because there are 3 members of the class.</div><div><br></div><div>What's strange is that I don't see anything in the CPlusPlusLanguage plugin that provides a SyntheticChildrenFrontEnd that examines the CxxRecordDecl and looks for children, so I don't know how this is supposed to work anywhere.  But I know it must work somewhere, so I assume I'm just missing something and I need to find out the right place to hook A up to B and things will just work.</div></div><div><br></div><div>Any pointers on what the expected code path that this should be taking is, so I can try to figure out where I might be going off path?</div></div>
</blockquote></div>