Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-debug-dev] (MI) -var-update *

> 
> > * Variable Objects and Registers.
> >   - I'm currently changing the implementation:
> >     The current(soon to change) way, was to create variable object
> >     for all the registers.  In the UI when different stackframe was
> >     selected this would map to:
> >     -thread-select 1
> >     -stack-select-frame 2
> >     -var-update *
> >     when the answer of the "-var-update" would be parse to construct
> >     events fired to the UI views telling them that some registers changes
> >     Problems:  Doing this "-var-update *" make gdb misbehaved and returning
> >     errors like
> >     -var-update *
> >     ~"can not access memory at 0xf4"
> 
> How did you create the varobj?
> 
> > 
> >     and gdb would simply hang.  Or sometimes "-var-update *" would
> >     would not answer at all.  We took for granted that "-var-update *"
> >     was a "light" call and would issue it 4-5 times.
> 
> It should work. Maybe there is an underlying GDB bug? It certainly works 
> for me when I tried it on a (non-threaded) app. Got a testcase?
> 

Unfortunately,  I can not come up with a simple test case to isolate
the problem 8-(.  The only clue, is the fact all the register are created
-var-create - * $xmm0
-var-create - * $eax
etc ...
with variable objects, and a "-var-update *" is issue at every
new stack selected and for some reason this will hang gdb.

-var-update *
&"Cannot access memory at address 0x4\n"


I still have an old log session of this(see below) it is very verbose.

We are currently changing registers to use 
-data-list-regiter-names
-data-list-regiter-values
-data-list-regiter-....

instead, it was reliable to us in the past.


In the log the interresting parts ar command number
151 and 152, the last -var-update * hangs gdb.

===========================================
1 0-gdb-set confirm off
(gdb) 
1^done
2 0-gdb-set width 0
(gdb) 
2^done
3 0-gdb-set height 0
(gdb) 
3^done
4 0-gdb-set new-console
(gdb) 
&"No symbol \"new\" in current context.\n"
4^error,msg="No symbol \"new\" in current context."
(gdb) 
5 0-exec-arguments /home/alain/Hello/hello
5^done
(gdb) 
6 info threads
&"info threads\n"
&"No stack.\n"
6^error,msg="No stack."
(gdb) 
7 0-environment-directory /home/alain/Eclipse-2.0/eclipse/runtime-workspace/gdb-5.2.1
7^done
(gdb) 
8 0-data-list-register-names
8^done,register-names=["eax","ecx","edx","ebx","esp","ebp","esi","edi","eip","eflags","cs","ss","ds","es","fs","gs","st0","st1","st2","st3","st4","st5","st6","st7","fctrl","fstat","ftag","fiseg","fioff","foseg","fooff","fop","xmm0","xmm1","xmm2","xmm3","xmm4","xmm5","xmm6","xmm7","mxcsr","orig_eax"]
(gdb) 
9 0-break-insert main
9^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x080731ee",func="main",file="main.c",line="734",times="0"}
(gdb) 
10 0-exec-run
10^running
(gdb) 
10*stopped,reason="breakpoint-hit",bkptno="1",thread-id="0",frame={addr="0x080731ee",func="main",args=[{name="argc",value="2"},{name="argv",value="0xbfffee0c"}],file="main.c",line="734"}
11 info threads
(gdb) 
&"info threads\n"
11^done
12 0-var-update *
(gdb) 
12^done,changelist={}
(gdb) 
13 0-break-delete 1
13^done
(gdb) 
14 0-stack-list-frames
14^done,stack=[frame={level="0 ",addr="0x080731ee",func="main",file="main.c",line="734"},frame={level="1 ",addr="0x400ad177",func="__libc_start_main",file="../sysdeps/generic/libc-start.c",line="129"}]
(gdb) 
15 0-stack-select-frame 0
15^done
(gdb) 
16 0-var-update *
16^done,changelist={}
(gdb) 
17 0-stack-select-frame 0
17^done
(gdb) 
18 0-var-update *
18^done,changelist={}
(gdb) 
19 0-stack-list-arguments 0 0 0
19^done,stack-args=[frame={level="0",args=[name="argc",name="argv"]}]
(gdb) 
20 0-var-create - * argc
20^done,name="var1",numchild="0",type="int"
(gdb) 
21 0-var-create - * argv
21^done,name="var2",numchild="1",type="char **"
(gdb) 
22 0-stack-select-frame 0
22^done
(gdb) 
23 0-var-update *
23^done,changelist={}
(gdb) 
24 0-stack-list-locals 0
24^done,locals=[name="argc",name="argv",name="args"]
(gdb) 
25 0-var-create - * args
25^done,name="var3",numchild="2",type="struct captured_main_args"
(gdb) 
26 0-var-evaluate-expression var1
26^done,value="2"
(gdb) 
27 0-var-evaluate-expression var2
27^done,value="0xbfffee18"
(gdb) 
28 0-var-evaluate-expression var1
28^done,value="2"
(gdb) 
29 0-var-evaluate-expression var2
29^done,value="0xbfffee18"
(gdb) 
30 0-var-evaluate-expression var3
30^done,value="{...}"
(gdb) 
31 0-var-create - * $eax
31^done,name="var4",numchild="0",type="int"
(gdb) 
32 0-var-create - * $ecx
32^done,name="var5",numchild="0",type="int"
(gdb) 
33 0-var-create - * $edx
33^done,name="var6",numchild="0",type="int"
(gdb) 
34 0-var-create - * $ebx
34^done,name="var7",numchild="0",type="int"
(gdb) 
35 0-var-create - * $esp
35^done,name="var8",numchild="0",type="void *"
(gdb) 
36 0-var-create - * $ebp
36^done,name="var9",numchild="0",type="void *"
(gdb) 
37 0-var-create - * $esi
37^done,name="var10",numchild="0",type="int"
(gdb) 
38 0-var-create - * $edi
38^done,name="var11",numchild="0",type="int"
(gdb) 
39 0-var-create - * $eip
39^done,name="var12",numchild="0",type="void *"
(gdb) 
40 0-var-create - * $eflags
40^done,name="var13",numchild="0",type="int"
(gdb) 
41 0-var-create - * $cs
41^done,name="var14",numchild="0",type="int"
(gdb) 
42 0-var-create - * $ss
42^done,name="var15",numchild="0",type="int"
(gdb) 
43 0-var-create - * $ds
43^done,name="var16",numchild="0",type="int"
(gdb) 
44 0-var-create - * $es
44^done,name="var17",numchild="0",type="int"
(gdb) 
45 0-var-create - * $fs
45^done,name="var18",numchild="0",type="int"
(gdb) 
46 0-var-create - * $gs
46^done,name="var19",numchild="0",type="int"
(gdb) 
47 0-var-create - * $st0
47^done,name="var20",numchild="0",type="builtin_type_i387_ext"
(gdb) 
48 0-var-create - * $st1
48^done,name="var21",numchild="0",type="builtin_type_i387_ext"
(gdb) 
49 0-var-create - * $st2
49^done,name="var22",numchild="0",type="builtin_type_i387_ext"
(gdb) 
50 0-var-create - * $st3
50^done,name="var23",numchild="0",type="builtin_type_i387_ext"
(gdb) 
51 0-var-create - * $st4
51^done,name="var24",numchild="0",type="builtin_type_i387_ext"
(gdb) 
52 0-var-create - * $st5
52^done,name="var25",numchild="0",type="builtin_type_i387_ext"
(gdb) 
53 0-var-create - * $st6
53^done,name="var26",numchild="0",type="builtin_type_i387_ext"
(gdb) 
54 0-var-create - * $st7
54^done,name="var27",numchild="0",type="builtin_type_i387_ext"
(gdb) 
55 0-var-create - * $fctrl
55^done,name="var28",numchild="0",type="int"
(gdb) 
56 0-var-create - * $fstat
56^done,name="var29",numchild="0",type="int"
(gdb) 
57 0-var-create - * $ftag
57^done,name="var30",numchild="0",type="int"
(gdb) 
58 0-var-create - * $fiseg
58^done,name="var31",numchild="0",type="int"
(gdb) 
59 0-var-create - * $fioff
59^done,name="var32",numchild="0",type="int"
(gdb) 
60 0-var-create - * $foseg
60^done,name="var33",numchild="0",type="int"
(gdb) 
61 0-var-create - * $fooff
61^done,name="var34",numchild="0",type="int"
(gdb) 
62 0-var-create - * $fop
62^done,name="var35",numchild="0",type="int"
(gdb) 
63 0-var-create - * $xmm0
63^done,name="var36",numchild="1",type="struct __builtin_v4sf"
(gdb) 
64 0-var-create - * $xmm1
64^done,name="var37",numchild="1",type="struct __builtin_v4sf"
(gdb) 
65 0-var-create - * $xmm2
65^done,name="var38",numchild="1",type="struct __builtin_v4sf"
(gdb) 
66 0-var-create - * $xmm3
66^done,name="var39",numchild="1",type="struct __builtin_v4sf"
(gdb) 
67 0-var-create - * $xmm4
67^done,name="var40",numchild="1",type="struct __builtin_v4sf"
(gdb) 
68 0-var-create - * $xmm5
68^done,name="var41",numchild="1",type="struct __builtin_v4sf"
(gdb) 
69 0-var-create - * $xmm6
69^done,name="var42",numchild="1",type="struct __builtin_v4sf"
(gdb) 
70 0-var-create - * $xmm7
70^done,name="var43",numchild="1",type="struct __builtin_v4sf"
(gdb) 
71 0-var-create - * $mxcsr
71^done,name="var44",numchild="0",type="int"
(gdb) 
72 0-var-create - * $orig_eax
72^done,name="var45",numchild="0",type="int"
(gdb) 
73 0-var-evaluate-expression var4
73^done,value="2"
(gdb) 
74 0-var-evaluate-expression var5
74^done,value="0"
(gdb) 
75 0-var-evaluate-expression var6
75^done,value="-1073746408"
(gdb) 
76 0-var-evaluate-expression var7
76^done,value="1075558884"
(gdb) 
77 0-var-evaluate-expression var8
77^done,value="0xbfffed90"
(gdb) 
78 0-var-evaluate-expression var9
78^done,value="0xbfffed98"
(gdb) 
79 0-var-evaluate-expression var10
79^done,value="1073834852"
(gdb) 
80 0-var-evaluate-expression var11
80^done,value="-1073746420"
(gdb) 
81 0-var-evaluate-expression var12
81^done,value="0x80731ee"
(gdb) 
82 0-var-evaluate-expression var13
82^done,value="646"
(gdb) 
83 0-var-evaluate-expression var14
83^done,value="35"
(gdb) 
84 0-var-evaluate-expression var15
84^done,value="43"
(gdb) 
85 0-var-evaluate-expression var16
85^done,value="43"
(gdb) 
86 0-var-evaluate-expression var17
86^done,value="43"
(gdb) 
87 0-var-evaluate-expression var18
87^done,value="0"
(gdb) 
88 0-var-evaluate-expression var19
88^done,value="0"
(gdb) 
89 0-var-evaluate-expression var20
89^done,value="0"
(gdb) 
90 0-var-evaluate-expression var21
90^done,value="0"
(gdb) 
91 0-var-evaluate-expression var22
91^done,value="0"
(gdb) 
92 0-var-evaluate-expression var23
92^done,value="100"
(gdb) 
93 0-var-evaluate-expression var24
93^done,value="479"
(gdb) 
94 0-var-evaluate-expression var25
94^done,value="34"
(gdb) 
95 0-var-evaluate-expression var26
95^done,value="34"
(gdb) 
96 0-var-evaluate-expression var27
96^done,value="3.1415926535897931159979634685441852"
(gdb) 
97 0-var-evaluate-expression var28
97^done,value="895"
(gdb) 
98 0-var-evaluate-expression var29
98^done,value="0"
(gdb) 
99 0-var-evaluate-expression var30
99^done,value="65535"
(gdb) 
100 0-var-evaluate-expression var31
100^done,value="35"
(gdb) 
101 0-var-evaluate-expression var32
101^done,value="1074804486"
(gdb) 
102 0-var-evaluate-expression var33
102^done,value="43"
(gdb) 
103 0-var-evaluate-expression var34
103^done,value="1198165508"
(gdb) 
104 0-var-evaluate-expression var35
104^done,value="1308"
(gdb) 
105 0-var-evaluate-expression var36
105^done,value="{...}"
(gdb) 
106 0-var-evaluate-expression var37
106^done,value="{...}"
(gdb) 
107 0-var-evaluate-expression var38
107^done,value="{...}"
(gdb) 
108 0-var-evaluate-expression var39
108^done,value="{...}"
(gdb) 
109 0-var-evaluate-expression var40
109^done,value="{...}"
(gdb) 
110 0-var-evaluate-expression var41
110^done,value="{...}"
(gdb) 
111 0-var-evaluate-expression var42
111^done,value="{...}"
(gdb) 
112 0-var-evaluate-expression var43
112^done,value="{...}"
(gdb) 
113 0-var-evaluate-expression var44
113^done,value="8064"
(gdb) 
114 0-var-evaluate-expression var45
114^done,value="-1"
(gdb) 
115 0-exec-continue
115^running
(gdb) 
115*stopped,reason="signal-received",signal-name="SIGINT",signal-meaning="Interrupt",thread-id="0",frame={addr="0x40170227",func="__poll",args=[{name="fds",value="0x8227c10"},{name="nfds",value="1"},{name="timeout",value="-1"}],file="../sysdeps/unix/sysv/linux/poll.c",line="63"}
(gdb) 
116 info threads
&"info threads\n"
116^done
(gdb) 
117 0-var-update *
117^done,changelist={name="var45",in_scope="true",type_changed="false",name="var13",in_scope="true",type_changed="false",name="var12",in_scope="true",type_changed="false",name="var11",in_scope="true",type_changed="false",name="var10",in_scope="true",type_changed="false",name="var9",in_scope="true",type_changed="false",name="var8",in_scope="true",type_changed="false",name="var7",in_scope="true",type_changed="false",name="var6",in_scope="true",type_changed="false",name="var5",in_scope="true",type_changed="false",name="var4",in_scope="true",type_changed="false",name="var2",in_scope="true",type_changed="false",name="var1",in_scope="true",type_changed="false"}
(gdb) 
118 0-stack-list-frames
118^done,stack=[frame={level="0 ",addr="0x40170227",func="__poll",file="../sysdeps/unix/sysv/linux/poll.c",line="63"},frame={level="1 ",addr="0x080e111c",func="gdb_wait_for_event",file="event-loop.c",line="745"},frame={level="2 ",addr="0x080e0ba5",func="gdb_do_one_event",file="event-loop.c",line="366"},frame={level="3 ",addr="0x080cebbe",func="do_catch_errors",file="top.c",line="491"},frame={level="4 ",addr="0x080cea9a",func="catcher",file="top.c",line="423"},frame={level="5 ",addr="0x080cebf8",func="catch_errors",file="top.c",line="503"},frame={level="6 ",addr="0x080e0bf3",func="start_event_loop",file="event-loop.c",line="416"},frame={level="7 ",addr="0x080727ea",func="captured_command_loop",file="main.c",line="94"},frame={level="8 ",addr="0x080cebbe",func="do_catch_errors",file="top.c",line="491"},frame={level="9 ",addr="0x080cea9a",func="catcher",file="top.c",line="423"},frame={level="10",addr="0x080cebf8",func="catch_errors",file="top.c",line="503"},frame={level="11",addr=!
"0x080731e3",func="captured_main",file="main.c",line="723"},frame={level="12",addr="0x080cebbe",func="do_catch_errors",file="top.c",line="491"},frame={level="13",addr="0x080cea9a",func="catcher",file="top.c",line="423"},frame={level="14",addr="0x080cebf8",func="catch_errors",file="top.c",line="503"},frame={level="15",addr="0x0807320f",func="main",file="main.c",line="734"},frame={level="16",addr="0x400ad177",func="__libc_start_main",file="../sysdeps/generic/libc-start.c",line="129"}]
(gdb) 
119 0-stack-select-frame 0
119^done
(gdb) 
120 0-var-update *
120^done,changelist={}
(gdb) 
121 0-stack-select-frame 0
121^done
(gdb) 
122 0-var-update *
122^done,changelist={}
(gdb) 
123 0-stack-list-arguments 0 0 0
123^done,stack-args=[frame={level="0",args=[name="fds",name="nfds",name="timeout"]}]
(gdb) 
124 0-var-create - * fds
124^done,name="var46",numchild="3",type="struct pollfd *"
(gdb) 
125 0-var-create - * nfds
125^done,name="var47",numchild="0",type="nfds_t"
(gdb) 
126 0-var-create - * timeout
126^done,name="var48",numchild="0",type="int"
(gdb) 
127 0-stack-select-frame 0
127^done
(gdb) 
128 0-var-update *
128^done,changelist={}
(gdb) 
129 0-stack-list-locals 0
129^done,locals=[name="fds",name="nfds",name="timeout",name="resultvar"]
(gdb) 
130 0-var-create - * resultvar
130^done,name="var49",numchild="0",type="unsigned int"
(gdb) 
131 0-var-evaluate-expression var46
131^done,value="0x8227c10"
(gdb) 
132 0-var-evaluate-expression var47
132^done,value="1"
(gdb) 
133 0-var-evaluate-expression var48
133^done,value="2147483647"
(gdb) 
134 0-var-evaluate-expression var46
134^done,value="0x8227c10"
(gdb) 
135 0-var-evaluate-expression var47
135^done,value="1"
(gdb) 
136 0-var-evaluate-expression var48
136^done,value="2147483647"
(gdb) 
137 0-var-evaluate-expression var49
137^done,value="136477712"
(gdb) 
138 0-var-evaluate-expression var4
138^done,value="-4"
(gdb) 
139 0-var-evaluate-expression var5
139^done,value="1"
(gdb) 
140 0-var-evaluate-expression var6
140^done,value="2147483647"
(gdb) 
141 0-var-evaluate-expression var7
141^done,value="136477720"
(gdb) 
142 0-var-evaluate-expression var8
142^done,value="0xbfffe7cc"
(gdb) 
143 0-var-evaluate-expression var9
143^done,value="0xbfffe7d8"
(gdb) 
144 0-var-evaluate-expression var10
144^done,value="136424528"
(gdb) 
145 0-var-evaluate-expression var11
145^done,value="136477712"
(gdb) 
146 0-var-evaluate-expression var12
146^done,value="0x40170227"
(gdb) 
147 0-var-evaluate-expression var13
147^done,value="534"
(gdb) 
148 0-var-evaluate-expression var45
148^done,value="168"
(gdb) 
149 0-stack-select-frame 0
149^done
(gdb) 
150 0-var-update *
150^done,changelist={}
(gdb) 
151 0-stack-select-frame 16
151^done
(gdb) 
152 0-var-update *
&"Cannot access memory at address 0x4\n"
153 0-stack-select-frame 16
154 0-stack-select-frame 16
155 kill
156 kill
157 0-gdb-exit



Back to the top