The libstdc++ one is defined in examples/synthetic/gnu_libstdcpp.py while the libc++ one is defined in source/Plugins/Language/CPlusPlus/LibCxxVector.cpp and both of them is registered in source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp by specifying a type name regex to identify the effected types. If you have a custom STL or any other costume type I suggest you to write a synthetic child provider in Python (see https://lldb.llvm.org/varformats.html) as it can be loaded at runtime so you don't have to fork LLDB.
Tamas On Fri, Mar 24, 2017 at 4:30 PM Ted Woodward via lldb-dev < lldb-dev@lists.llvm.org> wrote: > On standalone Hexagon (no OS support), we use Dinkumware for the c/c++ > library. LLDB isn't able to print out values of a vector: > > Process 1 stopped > * thread #1: tid = 0x0001, 0x0000519c vector.elf`main + 76 at > vector.cpp:10, > stop reason = step in > frame #0: 0x0000519c vector.elf`main + 76 at vector.c:10 > 7 vector<int> v; > 8 v.push_back(2); > 9 v.push_back(1); > -> 10 cout << v[0] << " " << v[1] << endl; > 11 return 0; > 12 } > (lldb) fr v v > (std::vector<int, std::allocator<int> >) v = size=0 {} > > When I run on x86 linux built with gcc, I get: > (lldb) fr v v > (std::vector<int, std::allocator<int> >) v = size=2 { > [0] = 2 > [1] = 1 > } > > > My guess is Dinkumware's vector type is just a little bit different from > libstdc++/libcxx, so the standard formatters don't do the right thing. > Where > are the vector<int> formatters defined, and how does LLDB determine which > one to use? > > > -- > Qualcomm Innovation Center, Inc. > The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a > Linux Foundation Collaborative Project > > > _______________________________________________ > 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