mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 03:30:27 +02:00
add gdbinit for debugging the vm
* gdbinit: Add my gdbinit. The most useful commands are gwrite and vmstack.
This commit is contained in:
parent
76282387ea
commit
ff1592a106
1 changed files with 188 additions and 0 deletions
188
gdbinit
Normal file
188
gdbinit
Normal file
|
@ -0,0 +1,188 @@
|
|||
define newline
|
||||
call (void)scm_newline (scm_current_error_port ())
|
||||
end
|
||||
|
||||
define gdisplay
|
||||
call (void)scm_display ($arg0, scm_current_error_port ())
|
||||
newline
|
||||
end
|
||||
|
||||
define gwrite
|
||||
call (void)scm_write ($arg0, scm_current_error_port ())
|
||||
newline
|
||||
end
|
||||
|
||||
define sputs
|
||||
call (void)scm_puts ($arg0, scm_current_error_port ())
|
||||
end
|
||||
|
||||
define gslot
|
||||
print ((SCM**)$arg0)[1][$arg1]
|
||||
end
|
||||
|
||||
define pslot
|
||||
gslot $arg0 $arg1
|
||||
gwrite $
|
||||
end
|
||||
|
||||
define lforeach
|
||||
set $l=$arg0
|
||||
while $l != 0x404
|
||||
set $x=scm_car($l)
|
||||
$arg1 $x
|
||||
set $l = scm_cdr($l)
|
||||
end
|
||||
end
|
||||
|
||||
define modsum
|
||||
modname $arg0
|
||||
gslot $arg0 1
|
||||
set $uses=$
|
||||
output "uses:\n"
|
||||
lforeach $uses modname
|
||||
end
|
||||
|
||||
define moduses
|
||||
pslot $arg0 1
|
||||
end
|
||||
|
||||
define modname
|
||||
pslot $arg0 5
|
||||
end
|
||||
|
||||
define modkind
|
||||
pslot $arg0 6
|
||||
end
|
||||
|
||||
define car
|
||||
call scm_car ($arg0)
|
||||
end
|
||||
|
||||
define cdr
|
||||
call scm_cdr ($arg0)
|
||||
end
|
||||
|
||||
define smobwordtox
|
||||
set $x=((SCM*)$arg0)[$arg1]
|
||||
end
|
||||
|
||||
define smobdatatox
|
||||
smobwordtox $arg0 1
|
||||
end
|
||||
|
||||
define program
|
||||
smobdatatox $arg0
|
||||
p *(struct scm_program*)$x
|
||||
end
|
||||
|
||||
define proglocals
|
||||
set $i=bp->nlocs
|
||||
while $i > 0
|
||||
set $i=$i-1
|
||||
gwrite fp[bp->nargs+$i]
|
||||
end
|
||||
end
|
||||
|
||||
define progstack
|
||||
set $x=sp
|
||||
while $x > stack_base
|
||||
gwrite *$x
|
||||
set $x=$x-1
|
||||
end
|
||||
end
|
||||
|
||||
define tc16
|
||||
p ((scm_t_bits)$arg0) & 0xffff
|
||||
end
|
||||
|
||||
define smobdescriptor
|
||||
p scm_smobs[0xff & (((scm_t_bits)$arg0) >> 8)]
|
||||
end
|
||||
|
||||
define vmstack
|
||||
set $vmsp=sp
|
||||
set $vmstack_base=stack_base
|
||||
set $vmfp=fp
|
||||
set $vmbp=bp
|
||||
set $vmframe=0
|
||||
while $vmsp > vp->stack_base
|
||||
set $orig_vmsp=$vmsp
|
||||
while $vmsp > $vmstack_base
|
||||
output $orig_vmsp - $vmsp
|
||||
sputs "\t"
|
||||
output $vmsp
|
||||
sputs "\t"
|
||||
gwrite *$vmsp
|
||||
set $vmsp=$vmsp-1
|
||||
end
|
||||
newline
|
||||
sputs "Frame "
|
||||
output $vmframe
|
||||
newline
|
||||
sputs "ra:\t"
|
||||
output $vmsp
|
||||
sputs "\t"
|
||||
output (SCM*)*$vmsp
|
||||
set $vmsp=$vmsp-1
|
||||
newline
|
||||
sputs "mvra:\t"
|
||||
output $vmsp
|
||||
sputs "\t"
|
||||
output (SCM*)*$vmsp
|
||||
set $vmsp=$vmsp-1
|
||||
newline
|
||||
sputs "dl:\t"
|
||||
output $vmsp
|
||||
sputs "\t"
|
||||
set $vmdl=(SCM*)(*$vmsp)
|
||||
output $vmdl
|
||||
newline
|
||||
set $vmsp=$vmsp-1
|
||||
sputs "hl:\t"
|
||||
output $vmsp
|
||||
sputs "\t"
|
||||
gwrite *$vmsp
|
||||
set $vmsp=$vmsp-1
|
||||
sputs "el:\t"
|
||||
output $vmsp
|
||||
sputs "\t"
|
||||
gwrite *$vmsp
|
||||
set $vmsp=$vmsp-1
|
||||
set $vmnlocs=(int)$vmbp->nlocs
|
||||
while $vmnlocs > 0
|
||||
sputs "loc #"
|
||||
output $vmnlocs
|
||||
sputs ":\t"
|
||||
output $vmsp
|
||||
sputs "\t"
|
||||
gwrite *$vmsp
|
||||
set $vmsp=$vmsp-1
|
||||
set $vmnlocs=$vmnlocs-1
|
||||
end
|
||||
set $vmnargs=(int)$vmbp->nargs
|
||||
while $vmnargs > 0
|
||||
sputs "arg #"
|
||||
output $vmnargs
|
||||
sputs ":\t"
|
||||
output $vmsp
|
||||
sputs "\t"
|
||||
gwrite *$vmsp
|
||||
set $vmsp=$vmsp-1
|
||||
set $vmnargs=$vmnargs-1
|
||||
end
|
||||
sputs "prog:\t"
|
||||
output $vmsp
|
||||
sputs "\t"
|
||||
gwrite *$vmsp
|
||||
set $vmsp=$vmsp-1
|
||||
newline
|
||||
if !$vmdl
|
||||
loop_break
|
||||
end
|
||||
set $vmfp=$vmdl
|
||||
set $vmbp=(struct scm_program*)(((SCM*)($vmfp[-1]))[1])
|
||||
set $vmstack_base=$vmfp+$vmbp->nargs+$vmbp->nlocs+4
|
||||
set $vmframe=$vmframe+1
|
||||
newline
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue