Created
May 22, 2015 11:18
-
-
Save PSIAlt/e9009decba28de0abd77 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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