Bug 10252

Summary: -var-info-path-expression broken with python pretty-printing
Product: gdb Reporter: Vladimir Prus <vladimir>
Component: varobjAssignee: Tom Tromey <tromey>
Status: ASSIGNED ---    
Severity: normal CC: dje, gdb-prs, jens.elmenthaler, marc.khouzam, oliver.gerlich, sprigogin, tparker, tromey, tromey
Priority: P2    
Version: unknown   
Target Milestone: 6.8   
Host: Target:
Build: Last reconfirmed: 2009-06-08 16:03:15
Bug Depends on: 30816    
Bug Blocks:    

Description Vladimir Prus 2009-06-07 22:49:19 UTC
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
Comment 1 Tom Tromey 2009-06-08 16:03:15 UTC
I'll handle this.
Comment 2 Tom Tromey 2009-06-15 19:26:33 UTC
*** Bug 10284 has been marked as a duplicate of this bug. ***
Comment 3 Tom Tromey 2023-08-31 19:10:25 UTC
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.
Comment 4 Tom Tromey 2023-08-31 19:11:07 UTC
*** Bug 17529 has been marked as a duplicate of this bug. ***
Comment 5 Tom Tromey 2023-09-26 15:36:06 UTC
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.