Hello, I'm observing very strange LLDB behavior: it does not always shows a correct dynamic type when I ask for.
Originally I was working with LLDB 3.9, but it looks like trunk version behaves the same strange way. I was able to capture this behavior in a small code snippet: #include <iostream> #include <typeinfo> using namespace std; struct base_type { virtual ~base_type(){} }; template <class T1, class T2, unsigned SIZE> struct derived0 : base_type {}; template <class T1, class T2> struct derived1 : base_type {}; int main(int argc, char ** argv) { base_type * bptr0 = new derived0<int, int, 1024>(); base_type * bptr1 = new derived1<int, int >(); cout << typeid(*bptr0).name() << endl; cout << typeid(*bptr1).name() << endl; return 0; } lldb --version lldb version 5.0.0 (http://llvm.org/svn/llvm-project/lldb/trunk revision 293398) clang revision 293398 llvm revision 293398 Testing in LLDB: (lldb) break set --file main.cpp --line 22 (lldb) expression -d no-run -- bptr1 (derived1<int, int> *) $2 = 0x0000000000614c40 (lldb) expression -d no-run -- bptr0 *(base_type *) $3 = 0x0000000000614c20* Can someone explain me why for bptr0 I dont get a derived0<int, int, 1024> * as I expected? Thanks, Roman
_______________________________________________ lldb-dev mailing list lldb-dev@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev