[
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