Add haskell debugging macros
This commit is contained in:
		
							
								
								
									
										169
									
								
								dotfiles/gdbinit
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										169
									
								
								dotfiles/gdbinit
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,169 @@
 | 
			
		||||
# Change $r13 to whatever BaseReg is mapped to
 | 
			
		||||
define pregs
 | 
			
		||||
print *(StgRegTable *)$r13
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
define ptso
 | 
			
		||||
print *((StgRegTable*)$r13)->rCurrentTSO
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
define pR1
 | 
			
		||||
print (((StgRegTable)MainRegTable).rR1)
 | 
			
		||||
end
 | 
			
		||||
define pR2
 | 
			
		||||
print (((StgRegTable)MainRegTable).rR2)
 | 
			
		||||
end
 | 
			
		||||
define pR3
 | 
			
		||||
print (((StgRegTable)MainRegTable).rR3)
 | 
			
		||||
end
 | 
			
		||||
define pR4
 | 
			
		||||
print (((StgRegTable)MainRegTable).rR4)
 | 
			
		||||
end
 | 
			
		||||
define pR5
 | 
			
		||||
print (((StgRegTable)MainRegTable).rR5)
 | 
			
		||||
end
 | 
			
		||||
define pR6
 | 
			
		||||
print (((StgRegTable)MainRegTable).rR6)
 | 
			
		||||
end
 | 
			
		||||
define pR7
 | 
			
		||||
print (((StgRegTable)MainRegTable).rR7)
 | 
			
		||||
end
 | 
			
		||||
define pR8
 | 
			
		||||
print (((StgRegTable)MainRegTable).rR8)
 | 
			
		||||
end
 | 
			
		||||
define pFlt1
 | 
			
		||||
print (StgFloat) (((StgRegTable)MainRegTable).rFlt1)
 | 
			
		||||
end
 | 
			
		||||
define pDbl1
 | 
			
		||||
print (StgDouble) (((StgRegTable)MainRegTable).rDbl1)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
define pSp
 | 
			
		||||
print (((StgRegTable)MainRegTable).rSp)
 | 
			
		||||
end
 | 
			
		||||
define pSu
 | 
			
		||||
print (((StgRegTable)MainRegTable).rSu)
 | 
			
		||||
end
 | 
			
		||||
define pSpLim
 | 
			
		||||
print (((StgRegTable)MainRegTable).rSpLim)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
define pHp
 | 
			
		||||
print (((StgRegTable)MainRegTable).rHp)
 | 
			
		||||
end
 | 
			
		||||
define pHpLim
 | 
			
		||||
print (((StgRegTable)MainRegTable).rHpLim)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
# Change $rbp to whatever Sp is mapped to
 | 
			
		||||
define pstk
 | 
			
		||||
pmem $ebp 16
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
define pstk_gc
 | 
			
		||||
pmem MainTSO->sp 16
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
define pmem
 | 
			
		||||
set $i = $arg1
 | 
			
		||||
set $mem = ((unsigned long)$arg0) & (sizeof(void*)==8 ? ~7 : ~3)
 | 
			
		||||
while $i > 0
 | 
			
		||||
set $i = $i - 1
 | 
			
		||||
x/1a (((long *)$mem) +$i)
 | 
			
		||||
end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
define p4
 | 
			
		||||
pmem $arg0 4
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
define p8
 | 
			
		||||
pmem $arg0 8
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
define p16
 | 
			
		||||
pmem $arg0 16
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
define pmem_forwards
 | 
			
		||||
set $mem = $arg0 & (sizeof(void*)==8 ? ~7 : ~3)
 | 
			
		||||
set $i = 0
 | 
			
		||||
while $i < $arg1
 | 
			
		||||
x/1a (((int *)$mem) + $i)
 | 
			
		||||
set $i = $i + 1
 | 
			
		||||
end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
define pheap
 | 
			
		||||
pmem $edi-16 16
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
define dpc
 | 
			
		||||
display /i $pc
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
define pinfo
 | 
			
		||||
p *((StgInfoTable *)$arg0-1)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
define pcinfo
 | 
			
		||||
p *((StgConInfoTable *)$arg0-1)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
define prinfo
 | 
			
		||||
p *((StgRetInfoTable *)$arg0-1)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
define pfinfo
 | 
			
		||||
p *((StgFunInfoTable *)$arg0-1)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
define pbd
 | 
			
		||||
p sizeof(void *)==8 ? (* ((bdescr *)((($arg0 & 0xfffffffffff00000) | (($arg0 & 0xff000) >> 6)) & 0xffffffffffffffc0))) : * ((bdescr *)((($arg0 & 0xfff00000) | (($arg0 & 0xff000) >> 7)) & 0xffffffe0))
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
define pgen
 | 
			
		||||
p generations[((bdescr *)((($arg0 & 0xfff00000) | (($arg0 & 0xff000) >> 7)) & 0xffffffe0))->gen_no]
 | 
			
		||||
p * ((bdescr *)((($arg0 & 0xfff00000) | (($arg0 & 0xff000) >> 7)) & 0xffffffe0))->step
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
define getmark
 | 
			
		||||
set $bd = (bdescr *)((($arg0 & 0xfff00000) | (($arg0 & 0xff000) >> 7)) & 0xffffffe0)
 | 
			
		||||
set $offset = (StgPtr)$arg0 - $bd->start
 | 
			
		||||
set $bitmap_word = $bd->u.bitmap + ($offset / 32)
 | 
			
		||||
set $mask = 1 << ($offset & 31)
 | 
			
		||||
p (*$bitmap_word & $mask) != 0
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
define getmark64
 | 
			
		||||
set $bd = (bdescr *)((($arg0 & 0xfffffffffff00000) | (($arg0 & 0xff000) >> 6)) & 0xffffffffffffffc0)
 | 
			
		||||
set $offset = (StgPtr)$arg0 - $bd->start
 | 
			
		||||
set $bitmap_word = $bd->u.bitmap + ($offset / 64)
 | 
			
		||||
set $mask = 1 << ($offset & 63)
 | 
			
		||||
p (*$bitmap_word & $mask) != 0
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
# ignore SIGPIPEs
 | 
			
		||||
handle SIGPIPE nostop noprint ignore
 | 
			
		||||
 | 
			
		||||
define debug1
 | 
			
		||||
p RtsFlags.DebugFlags.interpreter=1
 | 
			
		||||
p RtsFlags.DebugFlags.apply=1
 | 
			
		||||
p RtsFlags.DebugFlags.sanity=1
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
define debug2
 | 
			
		||||
p RtsFlags.DebugFlags.interpreter=1
 | 
			
		||||
p RtsFlags.DebugFlags.sanity=1
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
define sanity
 | 
			
		||||
p RtsFlags.DebugFlags.sanity=1
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
define srch
 | 
			
		||||
print findPtr($1,0)
 | 
			
		||||
end
 | 
			
		||||
define chain
 | 
			
		||||
print findPtr($1,1)
 | 
			
		||||
end
 | 
			
		||||
		Reference in New Issue
	
	Block a user