Skip to content

Instantly share code, notes, and snippets.

@PSIAlt
Created May 22, 2015 11:18
Show Gist options
  • Save PSIAlt/e9009decba28de0abd77 to your computer and use it in GitHub Desktop.
Save PSIAlt/e9009decba28de0abd77 to your computer and use it in GitHub Desktop.
set history save on
set history expansion on
set history size 999
set $perl = 0
set $ctx = 0
define getperl
if $ctx == 0
set $ctx = Perl_get_context()
end
set $perl = (PerlInterpreter*)$ctx
end
define svpeek
set $pv = Perl_sv_peek((SV*)$arg0,0)
printf "%s\n", $pv
end
define printpv
set $pv = ((XPV*)(((SV*)$arg0)->sv_any))
printf "%s\n", $pv->xpv_pv
end
define printgv
set $gv = (XPVGV*)(((SV*)$arg0)->sv_any)
p *$gv
end
define printav
set $av = (XPVAV*)(((SV*)$arg0)->sv_any)
p *$av
end
define printhv
set $hv = (XPVHV*)(((SV*)$arg0)->sv_any)
p *$hv
end
define printcv
set $cv = (XPVCV*)(((SV*)$arg0)->sv_any)
p *$cv
end
define longmess
getperl
set $sv = Perl_eval_pv((void*)$perl,"require Carp; Carp::longmess()",0)
printpv $sv
end
define perlcoreinfo
getperl
p *(COP*)( $perl->Tcurcop )
printpv $perl->Isubname
end
define perleval
getperl
set $sv = Perl_eval_pv((void*)$perl,$arg0,0)
printpv $sv
end
handle SIGPIPE pass nostop noprint
handle SIGCHLD pass nostop noprint
define perlstack
getperl
set $st = $arg0
if $st == 0
set $st = $perl->Tstack_sp
end
while (int)*$st > 0
set $sv = *$st
set $st = $st + 1
set $type = $sv->sv_flags & 0xFF
printf "\tType=%d\n",$type
printf "\tDefined=%x\n\t", ($sv->sv_flags & 0x070F0000)
# svpeek $sv
p *(XPVGV*)$sv->sv_any
printf "--------------------\n"
end
end
define perlstacks
getperl
set $st = $arg0
if $st == null
set $st = $perl->Tcurstackinfo
end
while (int)$st > 0
p *$st->si_cxstack.cx_u.cx_blk.blku_oldcop
set $st = $st->si_next
end
end
define argn
set $x = *((void**)$esp + $arg0)
end
define argnfromframe
frame $arg0
argn $arg1
end
define ctxfromframe
frame $arg0
argn 0
set $ctx = $x
end
define printsvfromframe
argnfromframe $arg0 $arg1
printpv $x
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment