summaryrefslogtreecommitdiff
path: root/src/.gdbinit
blob: fd470e3138463e6fe861eeae87d9ca4acddb3489 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# Set up something to print out s-expressions.
define pr
set Fprin1 ($, Qexternal_debugging_output)
echo \n
end
document pr
Print the emacs s-expression which is $.
Works only when an inferior emacs is executing.
end

define xtype
print (enum Lisp_Type) (($ >> 24) & 0x7f)
p $$
end
document xtype
Print the type of $, assuming it is an Elisp value.
end

define xint
print (($ & 0x00ffffff) << 8) >> 8
end
document xint
Print $, assuming it is an Elisp integer.  This gets the sign right.
end

define xptr
print (void *) ($ & 0x00ffffff)
end
document xptr
Print the pointer portion of $, assuming it is an Elisp value.
end

define xwindow
print (struct window *) ($ & 0x00ffffff)
print ($->left)@4
print $$
end
document xwindow
Print $ as a window pointer, assuming it is an Elisp window value.
Print the window's position as { left, top, height, width }.
end

define xmarker
print (struct Lisp_Marker *) ($ & 0x00ffffff)
end
document xmarker
Print $ as a marker pointer, assuming it is an Elisp marker value.
end

define xbuffer
print (struct buffer *) ($ & 0x00ffffff)
print &((struct Lisp_String *) (($->name) & 0x00ffffff))->data
print $$
end
document xbuffer
Set $ as a buffer pointer, assuming it is an Elisp buffer value.
Print the name of the buffer.
end

define xsymbol
print (struct Lisp_Symbol *) ($ & 0x00ffffff)
print &$->name->data
print $$
end
document xsymbol
Print the name and address of the symbol $.
This command assumes that $ is an Elisp symbol value.
end

define xstring
print (struct Lisp_String *) ($ & 0x00ffffff)
print ($->size > 10000) ? "big string" : ($->data[0])@($->size)
print $$
end
document xstring
Print the contents and address of the string $.
This command assumes that $ is an Elisp string value.
end

define xvector
set $temp = (struct Lisp_Vector *) ($ & 0x00ffffff)
print ($temp->size > 10000) ? "big vector" : ($temp->contents[0])@($temp->size)
print $temp
end
document xvector
Print the contents and address of the vector $.
This command assumes that $ is an Elisp vector value.
end

define xscreen
print (struct screen *) ($ & 0x00ffffff)
end
document xwindow
Print $ as a screen pointer, assuming it is an Elisp screen value.
end

define xcons
print (struct Lisp_Cons *) ($ & 0x00ffffff)
print *$
print $$
end
document xcons
Print the contents of $, assuming it is an Elisp cons.
end

define xcar
print ((($ >> 24) & 0x7f) == Lisp_Cons ? ((struct Lisp_Cons *) ($ & 0x00ffffff))->car : 0)
end
document xcar
Print the car of $, assuming it is an Elisp pair.
end

define xcdr
print ((($ >> 24) & 0x7f) == Lisp_Cons ? ((struct Lisp_Cons *) ($ & 0x00ffffff))->cdr : 0)
end
document xcdr
Print the cdr of $, assuming it is an Elisp pair.
end

set print pretty on

# Don't let abort actually run, as it will make
# stdio stop working and therefore the `pr' command below as well.
break abort

# If we are running in synchronous mode, we want a chance to look around
# before Emacs exits.  Perhaps we should put the break somewhere else
# instead...
break _XPrintDefaultError

unset environment TERMCAP
unset environment TERM
set environment DISPLAY :0.0
show environment DISPLAY
set args -q