DebuggingGhcCrashes: .gdbinit

File .gdbinit, 2.8 kB (added by simonmar, 3 years ago)

gdb macros for debugging GHC-compiled code

Line 
1 # Change $r13 to whatever BaseReg is mapped to
2 define pregs
3 print *(StgRegTable *)$r13
4 end
5
6 define ptso
7 print *((StgRegTable*)$r13)->rCurrentTSO
8 end
9
10 define pR1
11 print (((StgRegTable)MainRegTable).rR1)
12 end
13 define pR2
14 print (((StgRegTable)MainRegTable).rR2)
15 end
16 define pR3
17 print (((StgRegTable)MainRegTable).rR3)
18 end
19 define pR4
20 print (((StgRegTable)MainRegTable).rR4)
21 end
22 define pR5
23 print (((StgRegTable)MainRegTable).rR5)
24 end
25 define pR6
26 print (((StgRegTable)MainRegTable).rR6)
27 end
28 define pR7
29 print (((StgRegTable)MainRegTable).rR7)
30 end
31 define pR8
32 print (((StgRegTable)MainRegTable).rR8)
33 end
34 define pFlt1
35 print (StgFloat) (((StgRegTable)MainRegTable).rFlt1)
36 end
37 define pDbl1
38 print (StgDouble) (((StgRegTable)MainRegTable).rDbl1)
39 end
40
41 define pSp
42 print (((StgRegTable)MainRegTable).rSp)
43 end
44 define pSu
45 print (((StgRegTable)MainRegTable).rSu)
46 end
47 define pSpLim
48 print (((StgRegTable)MainRegTable).rSpLim)
49 end
50
51 define pHp
52 print (((StgRegTable)MainRegTable).rHp)
53 end
54 define pHpLim
55 print (((StgRegTable)MainRegTable).rHpLim)
56 end
57
58 # Change $rbp to whatever Sp is mapped to
59 define pstk
60 pmem $ebp 16
61 end
62
63 define pstk_gc
64 pmem MainTSO->sp 16
65 end
66
67 define pmem
68 set $i = $arg1
69 while $i > 0
70 set $i = $i - 1
71 x/1a (((long *)$arg0) +$i)
72 end
73 end
74
75 define p4
76 pmem $arg0 4
77 end
78
79 define p8
80 pmem $arg0 8
81 end
82
83 define p16
84 pmem $arg0 16
85 end
86
87 define pmem_forwards
88 set $i = 0
89 while $i < $arg1
90 x/1a (((int *)$arg0) + $i)
91 set $i = $i + 1
92 end
93 end
94
95 define pheap
96 pmem $edi-16 16
97 end
98
99 define dpc
100 display /i $pc
101 end
102
103 define pinfo
104 p *((StgInfoTable *)$arg0-1)
105 end
106
107 define prinfo
108 p *((StgRetInfoTable *)$arg0-1)
109 end
110
111 define pfinfo
112 p *((StgFunInfoTable *)$arg0-1)
113 end
114
115 define pbdescr
116 p * ((bdescr *)((($arg0 & 0xfff00000) | (($arg0 & 0xff000) >> 7)) & 0xffffffe0))
117 end
118
119 define pbdescr64
120 p * ((bdescr *)((($arg0 & 0xfffffffffff00000) | (($arg0 & 0xff000) >> 6)) & 0xffffffffffffffc0))
121 end
122
123 define pgen
124 p generations[((bdescr *)((($arg0 & 0xfff00000) | (($arg0 & 0xff000) >> 7)) & 0xffffffe0))->gen_no]
125 p * ((bdescr *)((($arg0 & 0xfff00000) | (($arg0 & 0xff000) >> 7)) & 0xffffffe0))->step
126 end
127
128 define getmark
129 set $bd = (bdescr *)((($arg0 & 0xfff00000) | (($arg0 & 0xff000) >> 7)) & 0xffffffe0)
130 set $offset = (StgPtr)$arg0 - $bd->start
131 set $bitmap_word = $bd->u.bitmap + ($offset / 32)
132 set $mask = 1 << ($offset & 31)
133 p (*$bitmap_word & $mask) != 0
134 end
135
136 define getmark64
137 set $bd = (bdescr *)((($arg0 & 0xfffffffffff00000) | (($arg0 & 0xff000) >> 6)) & 0xffffffffffffffc0)
138 set $offset = (StgPtr)$arg0 - $bd->start
139 set $bitmap_word = $bd->u.bitmap + ($offset / 64)
140 set $mask = 1 << ($offset & 63)
141 p (*$bitmap_word & $mask) != 0
142 end
143
144 # ignore SIGPIPEs
145 handle SIGPIPE nostop noprint ignore
146
147 define debug1
148 p RtsFlags.DebugFlags.interpreter=1
149 p RtsFlags.DebugFlags.apply=1
150 p RtsFlags.DebugFlags.sanity=1
151 end
152
153 define debug2
154 p RtsFlags.DebugFlags.interpreter=1
155 p RtsFlags.DebugFlags.sanity=1
156 end
157
158 define sanity
159 p RtsFlags.DebugFlags.sanity=1
160 end