Mercurial > hg > xemacs-beta
comparison src/gdbinit @ 272:c5d627a313b1 r21-0b34
Import from CVS: tag r21-0b34
| author | cvs |
|---|---|
| date | Mon, 13 Aug 2007 10:28:48 +0200 |
| parents | 376386a54a3c |
| children | 558f606b08ae |
comparison
equal
deleted
inserted
replaced
| 271:c7b7086b0a39 | 272:c5d627a313b1 |
|---|---|
| 1 # Some useful commands for debugging emacs with gdb 4.14.* or better. | 1 # -*- ksh -*- |
| 2 # Install this as your .gdbinit file in your home directory. | 2 # Copyright (C) 1998 Free Software Foundation, Inc. |
| 3 # If you have an older version of gdb 4.x, consider using the | 3 |
| 4 # file "gdbinit.pre-4.14" in the XEmacs src directory. | 4 # This file is part of XEmacs. |
| 5 # If you're one of the few who has an XEmacs compiled with | 5 |
| 6 # --use-union-type, you'll need to use the file "gdbinit.union". | 6 # XEmacs is free software; you can redistribute it and/or modify it |
| 7 # Currently that file is of the pre-4.14 variety, but it should | 7 # under the terms of the GNU General Public License as published by the |
| 8 # be easy to update it to 4.14+, along the same lines as this file. | 8 # Free Software Foundation; either version 2, or (at your option) any |
| 9 # later version. | |
| 10 | |
| 11 # XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
| 12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
| 13 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
| 14 # for more details. | |
| 15 | |
| 16 # You should have received a copy of the GNU General Public License | |
| 17 # along with XEmacs; see the file COPYING. If not, write to | |
| 18 # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
| 19 # Boston, MA 02111-1307, USA. | |
| 20 | |
| 21 # Author: Martin Buchholz | |
| 22 | |
| 23 # Some useful commands for debugging emacs with gdb 4.16 or better. | |
| 24 # Install this as your .gdbinit file in your home directory, | |
| 25 # or source this file from your .gdbinit | |
| 26 # Configure xemacs with --debug, and compile with -g. | |
| 9 # | 27 # |
| 10 # See also question 2.1.15 of the XEmacs FAQ, titled | 28 # See also the question of the XEmacs FAQ, titled |
| 11 # "How to Debug an XEmacs problem with a debugger". | 29 # "How to Debug an XEmacs problem with a debugger". |
| 30 # | |
| 31 # This can be used to debug XEmacs no matter how the following are | |
| 32 # specified: | |
| 33 | |
| 34 # USE_UNION_TYPE | |
| 35 # USE_MINIMAL_TAGBITS | |
| 36 # USE_INDEXED_LRECORD_IMPLEMENTATION | |
| 37 # LRECORD_(SYMBOL|STRING|VECTOR) | |
| 38 | |
| 39 # (the above all have configure equivalents) | |
| 40 | |
| 41 # Some functions defined here require a running process, but most | |
| 42 # don't. Considerable effort has been expended to this end. | |
| 43 | |
| 44 # See the dbg_ C support code in src/alloc.c that allows the functions | |
| 45 # defined in this file to work correctly. | |
| 12 | 46 |
| 13 set print union off | 47 set print union off |
| 14 set print pretty off | 48 set print pretty off |
| 15 | 49 |
| 16 define temacs | 50 define decode_object |
| 17 run -batch -l loadup.el run-temacs -q | 51 set $obj = (unsigned long) $arg0 |
| 18 end | 52 if dbg_USE_MINIMAL_TAGBITS |
| 19 | 53 if $obj & 1 |
| 20 echo \n>>> Use the `temacs' command to run temacs\n\n | 54 # It's an int |
| 55 set $val = $obj >> 1 | |
| 56 set $type = dbg_Lisp_Type_Int | |
| 57 else | |
| 58 set $type = $obj & dbg_typemask | |
| 59 if $type == dbg_Lisp_Type_Char | |
| 60 set $val = ($obj & dbg_valmask) >> dbg_gctypebits | |
| 61 else | |
| 62 # It's a record pointer | |
| 63 set $val = $obj | |
| 64 end | |
| 65 end | |
| 66 else | |
| 67 # not dbg_USE_MINIMAL_TAGBITS | |
| 68 set $val = $obj & dbg_valmask | |
| 69 set $type = ($obj & dbg_typemask) >> (dbg_valbits + 1) | |
| 70 end | |
| 71 | |
| 72 if $type == dbg_Lisp_Type_Record | |
| 73 set $lheader = (struct lrecord_header *) $val | |
| 74 if dbg_USE_INDEXED_LRECORD_IMPLEMENTATION | |
| 75 set $imp = lrecord_implementations_table[$lheader->type] | |
| 76 else | |
| 77 set $imp = $lheader->implementation | |
| 78 end | |
| 79 else | |
| 80 set $imp = -1 | |
| 81 end | |
| 82 end | |
| 83 | |
| 84 document decode_object | |
| 85 Usage: decode_object lisp_object | |
| 86 Extract implementation information from a Lisp Object. | |
| 87 Defines variables $val, $type and $imp. | |
| 88 end | |
| 89 | |
| 90 define xint | |
| 91 decode_object $arg0 | |
| 92 print ((long) $val) | |
| 93 end | |
| 94 | |
| 95 define xtype | |
| 96 decode_object $arg0 | |
| 97 if $type == dbg_Lisp_Type_Int | |
| 98 echo int\n | |
| 99 else | |
| 100 if $type == dbg_Lisp_Type_Char | |
| 101 echo char\n | |
| 102 else | |
| 103 if $type == dbg_Lisp_Type_Symbol | |
| 104 echo symbol\n | |
| 105 else | |
| 106 if $type == dbg_Lisp_Type_String | |
| 107 echo string\n | |
| 108 else | |
| 109 if $type == dbg_Lisp_Type_Vector | |
| 110 echo vector\n | |
| 111 else | |
| 112 if $type == dbg_Lisp_Type_Cons | |
| 113 echo cons\n | |
| 114 else | |
| 115 printf "record type: %s\n", $imp->name | |
| 116 # barf | |
| 117 end | |
| 118 end | |
| 119 end | |
| 120 end | |
| 121 end | |
| 122 end | |
| 123 end | |
| 124 | |
| 125 define run-temacs | |
| 126 run -batch -l loadup.el run-temacs -q | |
| 127 end | |
| 128 | |
| 129 document run-temacs | |
| 130 Usage: run-temacs | |
| 131 Run temacs interactively, like xemacs. | |
| 132 Use this with debugging tools (like purify) that cannot deal with dumping, | |
| 133 or when temacs builds successfully, but xemacs does not. | |
| 134 end | |
| 135 | |
| 136 define update-elc | |
| 137 set env EMACSLOADPATH=../lisp/ | |
| 138 set env EMACSBOOTSTRAPLOADPATH=../lisp/:.. | |
| 139 run -batch -l update-elc.el | |
| 140 end | |
| 141 | |
| 142 document update-elc | |
| 143 Usage: update-elc | |
| 144 Run the elc compilation part of the build procedure. | |
| 145 Use when debugging temacs, not xemacs! | |
| 146 Use this when temacs builds successfully, but xemacs does not. | |
| 147 end | |
| 148 | |
| 149 define dump-temacs | |
| 150 set env EMACSLOADPATH=../lisp/:.. | |
| 151 run -batch -l loadup.el dump | |
| 152 end | |
| 153 | |
| 154 document dump-temacs | |
| 155 Usage: dump-temacs | |
| 156 Run the dumping part of the build procedure. | |
| 157 Use when debugging temacs, not xemacs! | |
| 158 Use this when temacs builds successfully, but xemacs does not. | |
| 159 end | |
| 21 | 160 |
| 22 # if you use Purify, do this: | 161 # if you use Purify, do this: |
| 23 # set env PURIFYOPTIONS -pointer-mask=0x0fffffff | 162 # export PURIFYOPTIONS='-pointer-mask=0x0fffffff' |
| 24 | 163 |
| 25 ################ Print using the Lisp printer | 164 define ldp |
| 26 | 165 printf "%s", "Lisp => " |
| 27 define p1 | 166 call debug_print($arg0) |
| 28 call debug_print ($arg0) | 167 end |
| 29 printf "\n" | 168 |
| 169 document ldp | |
| 170 Usage: ldp lisp_object | |
| 171 Print a Lisp Object value using the Lisp printer. | |
| 172 Requires a running xemacs process. | |
| 30 end | 173 end |
| 31 | 174 |
| 32 define lbt | 175 define lbt |
| 33 # "&" to compensate for GDB struct-passing bug | 176 call debug_backtrace() |
| 34 # but I've removed the &'s because it doesn't work with my GDB, | 177 end |
| 35 # and not having them works fine. | 178 |
| 36 call Fbacktrace (Qexternal_debugging_output, Qt) | 179 document lbt |
| 37 end | 180 Usage: lbt |
| 38 | 181 Print the current Lisp stack trace. |
| 39 ################ Print using GDB built-ins | 182 Requires a running xemacs process. |
| 40 | |
| 41 define xint | |
| 42 print ((int)($arg0 << 4))>>4 | |
| 43 end | |
| 44 | |
| 45 define xbitvec | |
| 46 print (struct Lisp_Bit_Vector *) ($arg0 & 0xFFFFFFF) | |
| 47 end | |
| 48 | |
| 49 define xbuffer | |
| 50 print (struct buffer *) ($arg0 & 0xFFFFFFF) | |
| 51 end | |
| 52 | |
| 53 define xbytecode | |
| 54 print (struct Lisp_Bytecode *) ($arg0 & 0xFFFFFFF) | |
| 55 end | |
| 56 | |
| 57 define xcharset | |
| 58 print (struct Lisp_Charset *) ($arg0 & 0xFFFFFFF) | |
| 59 end | |
| 60 | |
| 61 define xchartab | |
| 62 print (struct Lisp_Char_Table *) ($arg0 & 0xFFFFFFF) | |
| 63 end | |
| 64 | |
| 65 define xchartabentry | |
| 66 print (struct Lisp_Char_Table_Entry *) ($arg0 & 0xFFFFFFF) | |
| 67 end | |
| 68 | |
| 69 define xcodesys | |
| 70 print (struct Lisp_Coding_System *) ($arg0 & 0xFFFFFFF) | |
| 71 end | |
| 72 | |
| 73 define xcolorinst | |
| 74 print (struct Lisp_Color_Instance *) ($arg0 & 0xFFFFFFF) | |
| 75 end | |
| 76 | |
| 77 define xcons | |
| 78 print (struct Lisp_Cons *) ($arg0 & 0xFFFFFFF) | |
| 79 end | |
| 80 | |
| 81 define xdevice | |
| 82 print (struct device *) ($arg0 & 0xFFFFFFF) | |
| 83 end | |
| 84 | |
| 85 define xevent | |
| 86 print (struct Lisp_Event *) ($arg0 & 0xFFFFFFF) | |
| 87 end | |
| 88 | |
| 89 define xextent | |
| 90 print (struct extent *) ($arg0 & 0xFFFFFFF) | |
| 91 end | |
| 92 | |
| 93 define xextentaux | |
| 94 print (struct extent_auxiliary *) ($arg0 & 0xFFFFFFF) | |
| 95 end | |
| 96 | |
| 97 define xextentinfo | |
| 98 print (struct extent_info *) ($arg0 & 0xFFFFFFF) | |
| 99 end | |
| 100 | |
| 101 define xfloat | |
| 102 print (struct Lisp_Float *) ($arg0 & 0xFFFFFFF) | |
| 103 output (double) $arg0->data.d | |
| 104 echo \n | |
| 105 end | |
| 106 | |
| 107 define xfontinst | |
| 108 print (struct Lisp_Font_Instance *) ($arg0 & 0xFFFFFFF) | |
| 109 end | |
| 110 | |
| 111 define xframe | |
| 112 print (struct frame *) ($arg0 & 0xFFFFFFF) | |
| 113 end | |
| 114 | |
| 115 define xglyph | |
| 116 print (struct Lisp_Glyph *) ($arg0 & 0xFFFFFFF) | |
| 117 end | |
| 118 | |
| 119 define xhashtable | |
| 120 print (struct hashtable_struct *) ($arg0 & 0xFFFFFFF) | |
| 121 end | |
| 122 | |
| 123 define ximageinst | |
| 124 print (struct Lisp_Image_Instance *) ($arg0 & 0xFFFFFFF) | |
| 125 end | |
| 126 | |
| 127 define xkeymap | |
| 128 print (struct keymap *) ($arg0 & 0xFFFFFFF) | |
| 129 end | |
| 130 | |
| 131 define xlstream | |
| 132 print (struct lstream *) ($arg0 & 0xFFFFFFF) | |
| 133 end | |
| 134 | |
| 135 define xmarker | |
| 136 print (struct Lisp_Marker *) ($arg0 & 0xFFFFFFF) | |
| 137 end | |
| 138 | |
| 139 define xmenubardata | |
| 140 print (struct menubar_data *) ($arg0 & 0xFFFFFFF) | |
| 141 end | |
| 142 | |
| 143 define xopaque | |
| 144 print (struct Lisp_Opaque *) ($arg0 & 0xFFFFFFF) | |
| 145 end | |
| 146 | |
| 147 define xprocess | |
| 148 print (struct Lisp_Process *) ($arg0 & 0xFFFFFFF) | |
| 149 end | |
| 150 | |
| 151 define xrangetab | |
| 152 print (struct Lisp_Range_Table *) ($arg0 & 0xFFFFFFF) | |
| 153 end | |
| 154 | |
| 155 define xspec | |
| 156 print (struct Lisp_Specifier *) ($arg0 & 0xFFFFFFF) | |
| 157 end | |
| 158 | |
| 159 define xstring | |
| 160 print (struct Lisp_String *) ($arg0 & 0xFFFFFFF) | |
| 161 output (char *) $arg0->_data | |
| 162 echo \n | |
| 163 end | |
| 164 | |
| 165 define xsubr | |
| 166 print (struct Lisp_Subr *) ($arg0 & 0xFFFFFFF) | |
| 167 end | |
| 168 | |
| 169 define xsubwindow | |
| 170 print (struct Lisp_Subwindow *) ($arg0 & 0xFFFFFFF) | |
| 171 end | |
| 172 | |
| 173 define xsymbol | |
| 174 set $tem = (struct Lisp_Symbol *) ($arg0 & 0xFFFFFFF) | |
| 175 output $tem->name->_data | |
| 176 printf "\n" | |
| 177 print $tem | |
| 178 end | |
| 179 | |
| 180 define xtoolbarbutton | |
| 181 print (struct toolbar_button *) ($arg0 & 0xFFFFFFF) | |
| 182 end | |
| 183 | |
| 184 define xtoolbardata | |
| 185 print (struct toolbar_data *) ($arg0 & 0xFFFFFFF) | |
| 186 end | |
| 187 | |
| 188 define xtooltalkmess | |
| 189 print (struct Lisp_Tooltalk_Message *) ($arg0 & 0xFFFFFFF) | |
| 190 end | |
| 191 | |
| 192 define xtooltalkpatt | |
| 193 print (struct Lisp_Tooltalk_Pattern *) ($arg0 & 0xFFFFFFF) | |
| 194 end | |
| 195 | |
| 196 define xvector | |
| 197 print (struct Lisp_Vector *) ($arg0 & 0xFFFFFFF) | |
| 198 end | |
| 199 | |
| 200 define xwindow | |
| 201 print (struct window *) ($arg0 & 0xFFFFFFF) | |
| 202 end | |
| 203 | |
| 204 define xwindowconfig | |
| 205 print (struct window_config *) ($arg0 & 0xFFFFFFF) | |
| 206 end | |
| 207 | |
| 208 define xrecord | |
| 209 print ((struct lrecord_header *) ($arg0 & 0xFFFFFFF)) | |
| 210 output (((struct lrecord_header *) ($arg0 & 0xFFFFFFF))->implementation->name) | |
| 211 echo \n | |
| 212 if ((struct lrecord_header *) ($arg0 & 0xFFFFFFF))->implementation == lrecord_symbol | |
| 213 xsymbol $arg0 | |
| 214 else | |
| 215 if ((struct lrecord_header *) ($arg0 & 0xFFFFFFF))->implementation == lrecord_extent | |
| 216 xextent $arg0 | |
| 217 else | |
| 218 if ((struct lrecord_header *) ($arg0 & 0xFFFFFFF))->implementation == lrecord_marker | |
| 219 xmarker $arg0 | |
| 220 else | |
| 221 if ((struct lrecord_header *) ($arg0 & 0xFFFFFFF))->implementation == lrecord_event | |
| 222 xevent $arg0 | |
| 223 else | |
| 224 if ((struct lrecord_header *) ($arg0 & 0xFFFFFFF))->implementation == lrecord_buffer | |
| 225 xbuffer $arg0 | |
| 226 else | |
| 227 if ((struct lrecord_header *) ($arg0 & 0xFFFFFFF))->implementation == lrecord_window | |
| 228 xwindow $arg0 | |
| 229 else | |
| 230 if ((struct lrecord_header *) ($arg0 & 0xFFFFFFF))->implementation == lrecord_frame | |
| 231 xframe $arg0 | |
| 232 else | |
| 233 if ((struct lrecord_header *) ($arg0 & 0xFFFFFFF))->implementation == lrecord_device | |
| 234 xdevice $arg0 | |
| 235 else | |
| 236 if ((struct lrecord_header *) ($arg0 & 0xFFFFFFF))->implementation == lrecord_console | |
| 237 xconsole $arg0 | |
| 238 else | |
| 239 if ((struct lrecord_header *) ($arg0 & 0xFFFFFFF))->implementation == lrecord_process | |
| 240 xprocess $arg0 | |
| 241 else | |
| 242 if ((struct lrecord_header *) ($arg0 & 0xFFFFFFF))->implementation == lrecord_subr | |
| 243 xsubr $arg0 | |
| 244 else | |
| 245 if ((struct lrecord_header *) ($arg0 & 0xFFFFFFF))->implementation == lrecord_compiled_function | |
| 246 xbytecode $arg0 | |
| 247 else | |
| 248 if ((struct lrecord_header *) ($arg0 & 0xFFFFFFF))->implementation == lrecord_window_configuration | |
| 249 xwindowconfig $arg0 | |
| 250 else | |
| 251 if ((struct lrecord_header *) ($arg0 & 0xFFFFFFF))->implementation == lrecord_float | |
| 252 xfloat $arg0 | |
| 253 else | |
| 254 if ((struct lrecord_header *) ($arg0 & 0xFFFFFFF))->implementation == lrecord_opaque | |
| 255 xopaque $arg0 | |
| 256 else | |
| 257 if ((struct lrecord_header *) ($arg0 & 0xFFFFFFF))->implementation == lrecord_glyph | |
| 258 xglyph $arg0 | |
| 259 else | |
| 260 if ((struct lrecord_header *) ($arg0 & 0xFFFFFFF))->implementation == lrecord_keymap | |
| 261 xkeymap $arg0 | |
| 262 else | |
| 263 if ((struct lrecord_header *) ($arg0 & 0xFFFFFFF))->implementation == lrecord_lstream | |
| 264 xlstream $arg0 | |
| 265 else | |
| 266 if ((struct lrecord_header *) ($arg0 & 0xFFFFFFF))->implementation == lrecord_bit_vector | |
| 267 xbitvec $arg0 | |
| 268 end | |
| 269 end | |
| 270 end | |
| 271 end | |
| 272 end | |
| 273 end | |
| 274 end | |
| 275 end | |
| 276 end | |
| 277 end | |
| 278 end | |
| 279 end | |
| 280 end | |
| 281 end | |
| 282 end | |
| 283 end | |
| 284 end | |
| 285 end | |
| 286 end | |
| 287 end | |
| 288 | |
| 289 define frob | |
| 290 if (enum Lisp_Type) (($arg0 >> 28) & 7) == Lisp_Int | |
| 291 xint $arg0 | |
| 292 else | |
| 293 if (enum Lisp_Type) (($arg0 >> 28) & 7) == Lisp_String | |
| 294 xstring $arg0 | |
| 295 else | |
| 296 if (enum Lisp_Type) (($arg0 >> 28) & 7) == Lisp_Cons | |
| 297 xcons $arg0 | |
| 298 else | |
| 299 if (enum Lisp_Type) (($arg0 >> 28) & 7) == Lisp_Vector | |
| 300 xvector $arg0 | |
| 301 else | |
| 302 if (enum Lisp_Type) (($arg0 >> 28) & 7) == Lisp_Record | |
| 303 xrecord $arg0 | |
| 304 else | |
| 305 printf "Unknown type?\n" | |
| 306 end | |
| 307 end | |
| 308 end | |
| 309 end | |
| 310 end | |
| 311 end | |
| 312 | |
| 313 ################ Miscellaneous | |
| 314 | |
| 315 define xtype | |
| 316 # this is really xgctype, as we mask off the mark bit | |
| 317 output (enum Lisp_Type) (($arg0 >> 28) & 7) | |
| 318 echo \n | |
| 319 end | |
| 320 | |
| 321 define xmarkbit | |
| 322 print ($arg0 >> 31) | |
| 323 end | |
| 324 | |
| 325 define nilp | |
| 326 print $arg0 == Qnil | |
| 327 end | |
| 328 | |
| 329 define xcar | |
| 330 frob ((struct Lisp_Cons *) ($arg0 & 0xFFFFFFF))->car | |
| 331 end | |
| 332 | |
| 333 define xcdr | |
| 334 frob ((struct Lisp_Cons *) ($arg0 & 0xFFFFFFF))->cdr | |
| 335 end | |
| 336 | |
| 337 set $vector_length_mask = ~(1<<31) | |
| 338 | |
| 339 define string-length | |
| 340 print ((struct Lisp_String *) ($arg0 & 0xFFFFFFF))->_size & $vector_length_mask | |
| 341 end | |
| 342 | |
| 343 define string-contents | |
| 344 print (char *) ((struct Lisp_String *) ($ & 0xFFFFFFF))->_data | |
| 345 end | |
| 346 | |
| 347 define vector-length | |
| 348 print ((struct Lisp_Vector *) ($ & 0xFFFFFFF))->size & $vector_length_mask | |
| 349 end | |
| 350 | |
| 351 define vector-contents | |
| 352 set $tem = (struct Lisp_Vector *) ($ & 0xFFFFFFF) | |
| 353 print *($tem->contents) @ ($tem->size & $vector_length_mask) | |
| 354 set $ = $tem->contents | |
| 355 end | |
| 356 | |
| 357 define symbol-name | |
| 358 set $tem = ((struct Lisp_Symbol *) ($ & 0xFFFFFFF))->name | |
| 359 # output *($tem->_data) @ ($tem->_size & $vector_length_mask) | |
| 360 output ($tem->_data) | |
| 361 echo \n | |
| 362 set $type = Lisp_String | |
| 363 echo \n | |
| 364 end | |
| 365 | |
| 366 define symbol-value | |
| 367 set $tem = ((struct Lisp_Symbol *) ($ & 0xFFFFFFF))->value | |
| 368 end | |
| 369 | |
| 370 define symbol-function | |
| 371 set $tem = ((struct Lisp_Symbol *) ($ & 0xFFFFFFF))->function | |
| 372 end | |
| 373 | |
| 374 define symbol-plist | |
| 375 set $tem = ((struct Lisp_Symbol *) ($ & 0xFFFFFFF))->plist | |
| 376 end | 183 end |
| 377 | 184 |
| 378 define wtype | 185 define wtype |
| 379 p $->core.widget_class->core_class.class_name | 186 print $arg0->core.widget_class->core_class.class_name |
| 380 end | 187 end |
| 381 | 188 |
| 382 define xtname | 189 define xtname |
| 383 print XrmQuarkToString(((Object)($))->object.xrm_name) | 190 print XrmQuarkToString(((Object)($arg0))->object.xrm_name) |
| 384 end | 191 end |
| 385 | 192 |
| 386 # | 193 # GDB's command language makes you want to ... |
| 387 # GDB, with the losing command-line parser that it has, | 194 |
| 388 # cannot handle nested blocks. | 195 define pstruct |
| 389 # | 196 set $xstruct = (struct $arg0 *) $val |
| 390 define breaks | 197 print $xstruct |
| 391 | 198 print *$xstruct |
| 392 br Fsignal | 199 end |
| 393 # command | 200 |
| 394 # bt 3 | 201 define pobj |
| 395 # p sig | 202 decode_object $arg0 |
| 396 # xsymbol | 203 if $type == dbg_Lisp_Type_Int |
| 397 # end | 204 printf "Integer: %d\n", $val |
| 398 | 205 else |
| 399 br Fkill_emacs | 206 if $type == dbg_Lisp_Type_Char |
| 400 # command | 207 if $val < 128 |
| 401 # bt 3 | 208 printf "Char: %c\n", $val |
| 402 # end | 209 else |
| 403 | 210 printf "Char: %d\n", $val |
| 404 br assertion_failed | 211 end |
| 405 # command | 212 else |
| 406 # bt 3 | 213 if $type == dbg_Lisp_Type_String || $imp == lrecord_string |
| 407 # end | 214 pstruct Lisp_String |
| 408 | 215 else |
| 409 end | 216 if $type == dbg_Lisp_Type_Cons || $imp == lrecord_cons |
| 217 pstruct Lisp_Cons | |
| 218 else | |
| 219 if $type == dbg_Lisp_Type_Symbol || $imp == lrecord_symbol | |
| 220 pstruct Lisp_Symbol | |
| 221 printf "Symbol name: %s\n", $xstruct->name->_data | |
| 222 else | |
| 223 if $type == dbg_Lisp_Type_Vector || $imp == lrecord_vector | |
| 224 pstruct Lisp_Vector | |
| 225 printf "Vector of length %d\n", $xstruct->size | |
| 226 #print *($xstruct->_data) @ $xstruct->size | |
| 227 else | |
| 228 if $imp == lrecord_bit_vector | |
| 229 pstruct Lisp_Bit_Vector | |
| 230 else | |
| 231 if $imp == lrecord_buffer | |
| 232 pstruct buffer | |
| 233 else | |
| 234 if $imp == lrecord_char_table | |
| 235 pstruct Lisp_Char_Table | |
| 236 else | |
| 237 if $imp == lrecord_char_table_entry | |
| 238 pstruct Lisp_Char_Table_Entry | |
| 239 else | |
| 240 if $imp == lrecord_charset | |
| 241 pstruct Lisp_Charset | |
| 242 else | |
| 243 if $imp == lrecord_coding_system | |
| 244 pstruct Lisp_Coding_System | |
| 245 else | |
| 246 if $imp == lrecord_color_instance | |
| 247 pstruct Lisp_Color_Instance | |
| 248 else | |
| 249 if $imp == lrecord_command_builder | |
| 250 pstruct command_builder | |
| 251 else | |
| 252 if $imp == lrecord_compiled_function | |
| 253 pstruct Lisp_Compiled_Function | |
| 254 else | |
| 255 if $imp == lrecord_console | |
| 256 pstruct console | |
| 257 else | |
| 258 if $imp == lrecord_database | |
| 259 pstruct database | |
| 260 else | |
| 261 if $imp == lrecord_device | |
| 262 pstruct device | |
| 263 else | |
| 264 if $imp == lrecord_event | |
| 265 pstruct Lisp_Event | |
| 266 else | |
| 267 if $imp == lrecord_extent | |
| 268 pstruct extent | |
| 269 else | |
| 270 if $imp == lrecord_extent_auxiliary | |
| 271 pstruct extent_auxiliary | |
| 272 else | |
| 273 if $imp == lrecord_extent_info | |
| 274 pstruct extent_info | |
| 275 else | |
| 276 if $imp == lrecord_face | |
| 277 pstruct Lisp_Face | |
| 278 else | |
| 279 if $imp == lrecord_float | |
| 280 pstruct Lisp_Float | |
| 281 else | |
| 282 if $imp == lrecord_font_instance | |
| 283 pstruct Lisp_Font_Instance | |
| 284 else | |
| 285 if $imp == lrecord_frame | |
| 286 pstruct frame | |
| 287 else | |
| 288 if $imp == lrecord_glyph | |
| 289 pstruct Lisp_Glyph | |
| 290 else | |
| 291 if $imp == lrecord_hashtable | |
| 292 pstruct hashtable | |
| 293 else | |
| 294 if $imp == lrecord_image_instance | |
| 295 pstruct Lisp_Image_Instance | |
| 296 else | |
| 297 if $imp == lrecord_keymap | |
| 298 pstruct keymap | |
| 299 else | |
| 300 if $imp == lrecord_lcrecord_list | |
| 301 pstruct lcrecord_list | |
| 302 else | |
| 303 if $imp == lrecord_lstream | |
| 304 pstruct lstream | |
| 305 else | |
| 306 if $imp == lrecord_marker | |
| 307 pstruct Lisp_Marker | |
| 308 else | |
| 309 if $imp == lrecord_opaque | |
| 310 pstruct Lisp_Opaque | |
| 311 else | |
| 312 if $imp == lrecord_opaque_list | |
| 313 pstruct Lisp_Opaque_List | |
| 314 else | |
| 315 if $imp == lrecord_popup_data | |
| 316 pstruct popup_data | |
| 317 else | |
| 318 if $imp == lrecord_process | |
| 319 pstruct Lisp_Process | |
| 320 else | |
| 321 if $imp == lrecord_range_table | |
| 322 pstruct Lisp_Range_Table | |
| 323 else | |
| 324 if $imp == lrecord_specifier | |
| 325 pstruct Lisp_Specifier | |
| 326 else | |
| 327 if $imp == lrecord_subr | |
| 328 pstruct Lisp_Subr | |
| 329 else | |
| 330 if $imp == lrecord_symbol_value_buffer_local | |
| 331 pstruct symbol_value_buffer_local | |
| 332 else | |
| 333 if $imp == lrecord_symbol_value_forward | |
| 334 pstruct symbol_value_forward | |
| 335 else | |
| 336 if $imp == lrecord_symbol_value_lisp_magic | |
| 337 pstruct symbol_value_lisp_magic | |
| 338 else | |
| 339 if $imp == lrecord_symbol_value_varalias | |
| 340 pstruct symbol_value_varalias | |
| 341 else | |
| 342 if $imp == lrecord_toolbar_button | |
| 343 pstruct toolbar_button | |
| 344 else | |
| 345 if $imp == lrecord_toolbar_data | |
| 346 pstruct toolbar_data | |
| 347 else | |
| 348 if $imp == lrecord_tooltalk_message | |
| 349 pstruct Lisp_Tooltalk_Message | |
| 350 else | |
| 351 if $imp == lrecord_tooltalk_pattern | |
| 352 pstruct Lisp_Tooltalk_Pattern | |
| 353 else | |
| 354 if $imp == lrecord_weak_list | |
| 355 pstruct weak_list | |
| 356 else | |
| 357 if $imp == lrecord_window | |
| 358 pstruct window | |
| 359 else | |
| 360 if $imp == lrecord_window_configuration | |
| 361 pstruct window_config | |
| 362 else | |
| 363 echo Unknown Lisp Object type\n | |
| 364 print $arg0 | |
| 365 # Barf, gag, retch | |
| 366 end | |
| 367 end | |
| 368 end | |
| 369 end | |
| 370 end | |
| 371 end | |
| 372 end | |
| 373 end | |
| 374 end | |
| 375 end | |
| 376 end | |
| 377 end | |
| 378 end | |
| 379 end | |
| 380 end | |
| 381 end | |
| 382 end | |
| 383 end | |
| 384 end | |
| 385 end | |
| 386 end | |
| 387 end | |
| 388 end | |
| 389 end | |
| 390 end | |
| 391 end | |
| 392 end | |
| 393 end | |
| 394 end | |
| 395 end | |
| 396 end | |
| 397 end | |
| 398 end | |
| 399 end | |
| 400 end | |
| 401 end | |
| 402 end | |
| 403 end | |
| 404 end | |
| 405 end | |
| 406 end | |
| 407 end | |
| 408 end | |
| 409 end | |
| 410 end | |
| 411 end | |
| 412 end | |
| 413 end | |
| 414 end | |
| 415 end | |
| 416 end | |
| 417 end | |
| 418 | |
| 419 document pobj | |
| 420 Usage: pobj lisp_object | |
| 421 Print the internal C structure of a underlying Lisp Object. | |
| 422 end |
