Mercurial > hg > xemacs-beta
comparison src/gdbinit @ 337:fbbf69b4e8a7 r21-0-66
Import from CVS: tag r21-0-66
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:51:02 +0200 |
parents | e11d67e05968 |
children | 30d2cfa1092a |
comparison
equal
deleted
inserted
replaced
336:fe0a93612022 | 337:fbbf69b4e8a7 |
---|---|
51 set $obj = (unsigned long) $arg0 | 51 set $obj = (unsigned long) $arg0 |
52 if dbg_USE_MINIMAL_TAGBITS | 52 if dbg_USE_MINIMAL_TAGBITS |
53 if $obj & 1 | 53 if $obj & 1 |
54 # It's an int | 54 # It's an int |
55 set $val = $obj >> 1 | 55 set $val = $obj >> 1 |
56 set $type = dbg_Lisp_Type_Int | 56 set $type = Lisp_Type_Int |
57 else | 57 else |
58 set $type = $obj & dbg_typemask | 58 set $type = $obj & dbg_typemask |
59 if $type == dbg_Lisp_Type_Char | 59 if $type == Lisp_Type_Char |
60 set $val = ($obj & dbg_valmask) >> dbg_gctypebits | 60 set $val = ($obj & dbg_valmask) >> dbg_gctypebits |
61 else | 61 else |
62 # It's a record pointer | 62 # It's a record pointer |
63 set $val = $obj | 63 set $val = $obj |
64 end | 64 end |
67 # not dbg_USE_MINIMAL_TAGBITS | 67 # not dbg_USE_MINIMAL_TAGBITS |
68 set $val = $obj & dbg_valmask | 68 set $val = $obj & dbg_valmask |
69 set $type = ($obj & dbg_typemask) >> (dbg_valbits + 1) | 69 set $type = ($obj & dbg_typemask) >> (dbg_valbits + 1) |
70 end | 70 end |
71 | 71 |
72 if $type == dbg_Lisp_Type_Record | 72 if $type == Lisp_Type_Record |
73 set $lheader = (struct lrecord_header *) $val | 73 set $lheader = (struct lrecord_header *) $val |
74 if dbg_USE_INDEXED_LRECORD_IMPLEMENTATION | 74 if dbg_USE_INDEXED_LRECORD_IMPLEMENTATION |
75 set $imp = lrecord_implementations_table[$lheader->type] | 75 set $imp = lrecord_implementations_table[$lheader->type] |
76 else | 76 else |
77 set $imp = $lheader->implementation | 77 set $imp = $lheader->implementation |
92 print ((long) $val) | 92 print ((long) $val) |
93 end | 93 end |
94 | 94 |
95 define xtype | 95 define xtype |
96 decode_object $arg0 | 96 decode_object $arg0 |
97 if $type == dbg_Lisp_Type_Int | 97 if $type == Lisp_Type_Int |
98 echo int\n | 98 echo int\n |
99 else | 99 else |
100 if $type == dbg_Lisp_Type_Char | 100 if $type == Lisp_Type_Char |
101 echo char\n | 101 echo char\n |
102 else | 102 else |
103 if $type == dbg_Lisp_Type_Symbol | 103 if $type == Lisp_Type_Symbol |
104 echo symbol\n | 104 echo symbol\n |
105 else | 105 else |
106 if $type == dbg_Lisp_Type_String | 106 if $type == Lisp_Type_String |
107 echo string\n | 107 echo string\n |
108 else | 108 else |
109 if $type == dbg_Lisp_Type_Vector | 109 if $type == Lisp_Type_Vector |
110 echo vector\n | 110 echo vector\n |
111 else | 111 else |
112 if $type == dbg_Lisp_Type_Cons | 112 if $type == Lisp_Type_Cons |
113 echo cons\n | 113 echo cons\n |
114 else | 114 else |
115 printf "record type: %s\n", $imp->name | 115 printf "record type: %s\n", $imp->name |
116 # barf | 116 # barf |
117 end | 117 end |
120 end | 120 end |
121 end | 121 end |
122 end | 122 end |
123 end | 123 end |
124 | 124 |
125 define lisp-shadows | |
126 run -batch -vanilla -f list-load-path-shadows | |
127 end | |
128 | |
129 document lisp-shadows | |
130 Usage: lisp-shadows | |
131 Run xemacs to check for lisp shadows | |
132 end | |
133 | |
134 define environment-to-run-temacs | |
135 unset env EMACSLOADPATH | |
136 set env EMACSBOOTSTRAPLOADPATH=../lisp/:.. | |
137 set env EMACSBOOTSTRAPMODULEPATH=../modules/:.. | |
138 end | |
139 | |
125 define run-temacs | 140 define run-temacs |
126 unset env EMACSLOADPATH | 141 environment-to-run-temacs |
127 set env EMACSBOOTSTRAPLOADPATH ../lisp/:.. | |
128 run -batch -l ../lisp/loadup.el run-temacs -q | 142 run -batch -l ../lisp/loadup.el run-temacs -q |
129 end | 143 end |
130 | 144 |
131 document run-temacs | 145 document run-temacs |
132 Usage: run-temacs | 146 Usage: run-temacs |
134 Use this with debugging tools (like purify) that cannot deal with dumping, | 148 Use this with debugging tools (like purify) that cannot deal with dumping, |
135 or when temacs builds successfully, but xemacs does not. | 149 or when temacs builds successfully, but xemacs does not. |
136 end | 150 end |
137 | 151 |
138 define update-elc | 152 define update-elc |
139 unset env EMACSLOADPATH | 153 environment-to-run-temacs |
140 set env EMACSBOOTSTRAPLOADPATH ../lisp/:.. | |
141 run -batch -l ../lisp/update-elc.el | 154 run -batch -l ../lisp/update-elc.el |
142 end | 155 end |
143 | 156 |
144 document update-elc | 157 document update-elc |
145 Usage: update-elc | 158 Usage: update-elc |
147 Use when debugging temacs, not xemacs! | 160 Use when debugging temacs, not xemacs! |
148 Use this when temacs builds successfully, but xemacs does not. | 161 Use this when temacs builds successfully, but xemacs does not. |
149 end | 162 end |
150 | 163 |
151 define dump-temacs | 164 define dump-temacs |
152 unset env EMACSLOADPATH | 165 environment-to-run-temacs |
153 set env EMACSBOOTSTRAPLOADPATH ../lisp/:.. | |
154 run -batch -l ../lisp/loadup.el dump | 166 run -batch -l ../lisp/loadup.el dump |
155 end | 167 end |
156 | 168 |
157 document dump-temacs | 169 document dump-temacs |
158 Usage: dump-temacs | 170 Usage: dump-temacs |
183 Usage: lbt | 195 Usage: lbt |
184 Print the current Lisp stack trace. | 196 Print the current Lisp stack trace. |
185 Requires a running xemacs process. | 197 Requires a running xemacs process. |
186 end | 198 end |
187 | 199 |
200 | |
201 define leval | |
202 ldp Feval(Fcar(Fread_from_string(build_string($arg0),Qnil,Qnil))) | |
203 end | |
204 | |
205 document leval | |
206 Usage: leval "SEXP" | |
207 Eval a lisp expression. | |
208 Requires a running xemacs process. | |
209 | |
210 Example: | |
211 (gdb) leval "(+ 1 2)" | |
212 Lisp ==> 3 | |
213 end | |
214 | |
215 | |
188 define wtype | 216 define wtype |
189 print $arg0->core.widget_class->core_class.class_name | 217 print $arg0->core.widget_class->core_class.class_name |
190 end | 218 end |
191 | 219 |
192 define xtname | 220 define xtname |
201 print *$xstruct | 229 print *$xstruct |
202 end | 230 end |
203 | 231 |
204 define pobj | 232 define pobj |
205 decode_object $arg0 | 233 decode_object $arg0 |
206 if $type == dbg_Lisp_Type_Int | 234 if $type == Lisp_Type_Int |
207 printf "Integer: %d\n", $val | 235 printf "Integer: %d\n", $val |
208 else | 236 else |
209 if $type == dbg_Lisp_Type_Char | 237 if $type == Lisp_Type_Char |
210 if $val < 128 | 238 if $val > 32 && $val < 128 |
211 printf "Char: %c\n", $val | 239 printf "Char: %c\n", $val |
212 else | 240 else |
213 printf "Char: %d\n", $val | 241 printf "Char: %d\n", $val |
214 end | 242 end |
215 else | 243 else |
216 if $type == dbg_Lisp_Type_String || $imp == lrecord_string | 244 if $type == Lisp_Type_String || $imp == lrecord_string |
217 pstruct Lisp_String | 245 pstruct Lisp_String |
218 else | 246 else |
219 if $type == dbg_Lisp_Type_Cons || $imp == lrecord_cons | 247 if $type == Lisp_Type_Cons || $imp == lrecord_cons |
220 pstruct Lisp_Cons | 248 pstruct Lisp_Cons |
221 else | 249 else |
222 if $type == dbg_Lisp_Type_Symbol || $imp == lrecord_symbol | 250 if $type == Lisp_Type_Symbol || $imp == lrecord_symbol |
223 pstruct Lisp_Symbol | 251 pstruct Lisp_Symbol |
224 printf "Symbol name: %s\n", $xstruct->name->_data | 252 printf "Symbol name: %s\n", $xstruct->name->_data |
225 else | 253 else |
226 if $type == dbg_Lisp_Type_Vector || $imp == lrecord_vector | 254 if $type == Lisp_Type_Vector || $imp == lrecord_vector |
227 pstruct Lisp_Vector | 255 pstruct Lisp_Vector |
228 printf "Vector of length %d\n", $xstruct->size | 256 printf "Vector of length %d\n", $xstruct->size |
229 #print *($xstruct->_data) @ $xstruct->size | 257 #print *($xstruct->_data) @ $xstruct->size |
230 else | 258 else |
231 if $imp == lrecord_bit_vector | 259 if $imp == lrecord_bit_vector |
257 else | 285 else |
258 if $imp == lrecord_console | 286 if $imp == lrecord_console |
259 pstruct console | 287 pstruct console |
260 else | 288 else |
261 if $imp == lrecord_database | 289 if $imp == lrecord_database |
262 pstruct database | 290 pstruct Lisp_Database |
263 else | 291 else |
264 if $imp == lrecord_device | 292 if $imp == lrecord_device |
265 pstruct device | 293 pstruct device |
266 else | 294 else |
267 if $imp == lrecord_event | 295 if $imp == lrecord_event |
290 else | 318 else |
291 if $imp == lrecord_glyph | 319 if $imp == lrecord_glyph |
292 pstruct Lisp_Glyph | 320 pstruct Lisp_Glyph |
293 else | 321 else |
294 if $imp == lrecord_hashtable | 322 if $imp == lrecord_hashtable |
295 pstruct hashtable | 323 pstruct Lisp_Hash_Table |
296 else | 324 else |
297 if $imp == lrecord_image_instance | 325 if $imp == lrecord_image_instance |
298 pstruct Lisp_Image_Instance | 326 pstruct Lisp_Image_Instance |
299 else | 327 else |
300 if $imp == lrecord_keymap | 328 if $imp == lrecord_keymap |
301 pstruct keymap | 329 pstruct Lisp_Keymap |
302 else | 330 else |
303 if $imp == lrecord_lcrecord_list | 331 if $imp == lrecord_lcrecord_list |
304 pstruct lcrecord_list | 332 pstruct lcrecord_list |
305 else | 333 else |
306 if $imp == lrecord_lstream | 334 if $imp == lrecord_lstream |
376 end | 404 end |
377 end | 405 end |
378 end | 406 end |
379 end | 407 end |
380 end | 408 end |
381 end | 409 # Repeat after me... gdb sux, gdb sux, gdb sux... |
382 end | 410 end |
383 end | 411 end |
384 end | 412 end |
385 end | 413 end |
386 end | 414 end |
387 end | 415 end |
388 end | 416 end |
389 end | 417 end |
390 end | 418 end |
391 end | 419 end |
392 end | 420 end |
393 end | 421 end |
394 end | 422 end |
395 end | 423 end |
396 end | 424 end |
397 end | 425 end |
398 end | 426 end |
427 end | |
428 # Are we having fun yet?? | |
399 end | 429 end |
400 end | 430 end |
401 end | 431 end |
402 end | 432 end |
403 end | 433 end |
417 | 447 |
418 document pobj | 448 document pobj |
419 Usage: pobj lisp_object | 449 Usage: pobj lisp_object |
420 Print the internal C structure of a underlying Lisp Object. | 450 Print the internal C structure of a underlying Lisp Object. |
421 end | 451 end |
452 | |
453 # ------------------------------------------------------------- | |
454 # functions to test the debugging support itself. | |
455 # If you change this file, make sure the following still work... | |
456 # ------------------------------------------------------------- | |
457 define test_xtype | |
458 printf "Vemacs_major_version: " | |
459 xtype Vemacs_major_version | |
460 printf "Vhelp_char: " | |
461 xtype Vhelp_char | |
462 printf "Qnil: " | |
463 xtype Qnil | |
464 printf "Qunbound: " | |
465 xtype Qunbound | |
466 printf "Vobarray: " | |
467 xtype Vobarray | |
468 printf "Vall_weak_lists: " | |
469 xtype Vall_weak_lists | |
470 printf "Vxemacs_codename: " | |
471 xtype Vxemacs_codename | |
472 end | |
473 | |
474 define test_pobj | |
475 printf "Vemacs_major_version: " | |
476 pobj Vemacs_major_version | |
477 printf "Vhelp_char: " | |
478 pobj Vhelp_char | |
479 printf "Qnil: " | |
480 pobj Qnil | |
481 printf "Qunbound: " | |
482 pobj Qunbound | |
483 printf "Vobarray: " | |
484 pobj Vobarray | |
485 printf "Vall_weak_lists: " | |
486 pobj Vall_weak_lists | |
487 printf "Vxemacs_codename: " | |
488 pobj Vxemacs_codename | |
489 end | |
490 |