I have a test program that basically pushed ints to a vector, and I'm getting this output: ~"11\t v.push_back(10);\n" *stopped,frame={addr="0x08048681",func="main",args=[],file="a.cpp",fullname="/tmp/a.cpp",line="11"},thread-id="1",stopped-threads="all" (gdb) -var-create V * v ^done,name="V",numchild="0",value="std::vector of length 0, capacity 0",type="std::vector<int, std::allocator<int> > &",thread-id="1" (gdb) -var-list-children V ^done,numchild="0",displayhint="array" (gdb) -exec-next ^running *running,thread-id="all" (gdb) *stopped,reason="end-stepping-range",frame={addr="0x0804869a",func="main",args=[],file="a.cpp",fullname="/tmp/a.cpp",line="12"},thread-id="1",stopped-threads="all" (gdb) -var-update V ^done,changelist=[{name="V",in_scope="true",type_changed="false",displayhint="array",children=[{name="V. [0]",exp="[0]",numchild="0",type="int",thread-id="1"}]}] (gdb) -var-evaluate-expression V.[0] ^done,value="10" (gdb) -var-info-path-expression V.[0] ^done,path_expr="((std::_Vector_base<int, std::allocator<int> >) v)" (gdb) I don't know what the right output from the last command might be, and whether it's possible to produce the right output, but saying that expression for the first element is 'v' is just bogus. I imagine we want to fix this by 7.0
I'll handle this.
*** Bug 10284 has been marked as a duplicate of this bug. ***
At some point I think we declared that -var-info-path-expression would simply not work for dynamic varobj. However, at times it would be nice if it did, at least in the cases where this makes sense. This would require an extension to the pretty-printing API.
*** Bug 17529 has been marked as a duplicate of this bug. ***
Now that the new base class is in, the idea here is to add a new method to ValuePrinter and have the varobj code call it when needed. Exactly how the method should work is TBD.