|
|
|
@ -35,7 +35,7 @@ document dump_bt |
|
|
|
end |
|
|
|
|
|
|
|
define printzv |
|
|
|
set $ind = 0 |
|
|
|
set $ind = 1 |
|
|
|
____printzv $arg0 0 |
|
|
|
end |
|
|
|
|
|
|
|
@ -43,61 +43,56 @@ document printzv |
|
|
|
prints content of zval |
|
|
|
end |
|
|
|
|
|
|
|
define ____printzv |
|
|
|
define ____printzv_contents |
|
|
|
____executor_globals |
|
|
|
set $zvalue = $arg0 |
|
|
|
|
|
|
|
if $zvalue->type == 0 |
|
|
|
if $zvalue.type == 0 |
|
|
|
set $typename = "NULL" |
|
|
|
end |
|
|
|
if $zvalue->type == 1 |
|
|
|
if $zvalue.type == 1 |
|
|
|
set $typename = "long" |
|
|
|
end |
|
|
|
if $zvalue->type == 2 |
|
|
|
if $zvalue.type == 2 |
|
|
|
set $typename = "double" |
|
|
|
end |
|
|
|
if $zvalue->type == 3 |
|
|
|
if $zvalue.type == 3 |
|
|
|
set $typename = "string" |
|
|
|
end |
|
|
|
if $zvalue->type == 4 |
|
|
|
if $zvalue.type == 4 |
|
|
|
set $typename = "array" |
|
|
|
end |
|
|
|
if $zvalue->type == 5 |
|
|
|
if $zvalue.type == 5 |
|
|
|
set $typename = "object" |
|
|
|
end |
|
|
|
if $zvalue->type == 6 |
|
|
|
if $zvalue.type == 6 |
|
|
|
set $typename = "bool" |
|
|
|
end |
|
|
|
if $zvalue->type == 7 |
|
|
|
if $zvalue.type == 7 |
|
|
|
set $typename = "resource" |
|
|
|
end |
|
|
|
if $zvalue->type == 8 |
|
|
|
if $zvalue.type == 8 |
|
|
|
set $typename = "constant" |
|
|
|
end |
|
|
|
if $zvalue->type == 9 |
|
|
|
if $zvalue.type == 9 |
|
|
|
set $typename = "const_array" |
|
|
|
end |
|
|
|
|
|
|
|
printf "[0x%08x] ", $zvalue |
|
|
|
|
|
|
|
if $zvalue == $eg.uninitialized_zval_ptr |
|
|
|
printf "*uninitialized* " |
|
|
|
end |
|
|
|
printf "(refcount=%d) %s: ", $zvalue->refcount, $typename |
|
|
|
if $zvalue->type == 1 |
|
|
|
printf "%ld", $zvalue->value.lval |
|
|
|
printf "(refcount=%d) %s: ", $zvalue.refcount, $typename |
|
|
|
if $zvalue.type == 1 |
|
|
|
printf "%ld", $zvalue.value.lval |
|
|
|
end |
|
|
|
if $zvalue->type == 2 |
|
|
|
printf "%lf", $zvalue->value.dval |
|
|
|
printf "%lf", $zvalue.value.dval |
|
|
|
end |
|
|
|
if $zvalue->type == 3 |
|
|
|
printf "\"%s\"(%d)", $zvalue->value.str.val, $zvalue->value.str.len |
|
|
|
if $zvalue.type == 3 |
|
|
|
printf "\"%s\"(%d)", $zvalue.value.str.val, $zvalue.value.str.len |
|
|
|
end |
|
|
|
if $zvalue->type == 4 |
|
|
|
if $zvalue.type == 4 |
|
|
|
if ! $arg1 |
|
|
|
printf "{\n" |
|
|
|
set $ind = $ind + 1 |
|
|
|
____print_ht $zvalue->value.ht |
|
|
|
____print_ht $zvalue.value.ht |
|
|
|
set $ind = $ind - 1 |
|
|
|
set $i = $ind |
|
|
|
while $i > 0 |
|
|
|
@ -107,10 +102,10 @@ define ____printzv |
|
|
|
printf "}" |
|
|
|
end |
|
|
|
end |
|
|
|
if $zvalue->type == 5 |
|
|
|
if $zvalue.type == 5 |
|
|
|
if ! $arg1 |
|
|
|
printf "(prop examination disabled due to a gdb bug)" |
|
|
|
if $zvalue->value.obj.handlers->get_properties |
|
|
|
if $zvalue.value.obj.handlers->get_properties |
|
|
|
# set $ht = $zvalue->value.obj.handlers->get_properties($zvalue) |
|
|
|
# printf "{\n" |
|
|
|
# set $ind = $ind + 1 |
|
|
|
@ -125,19 +120,68 @@ define ____printzv |
|
|
|
end |
|
|
|
end |
|
|
|
end |
|
|
|
if $zvalue->type == 6 |
|
|
|
if $zvalue->lval |
|
|
|
if $zvalue.type == 6 |
|
|
|
if $zvalue.value.lval |
|
|
|
printf "true" |
|
|
|
else |
|
|
|
printf "false" |
|
|
|
end |
|
|
|
end |
|
|
|
if $zvalue->type == 7 |
|
|
|
printf "#%d", $zvalue->value.lval |
|
|
|
if $zvalue.type == 7 |
|
|
|
printf "#%d", $zvalue.value.lval |
|
|
|
end |
|
|
|
printf "\n" |
|
|
|
end |
|
|
|
|
|
|
|
define ____printzv |
|
|
|
____executor_globals |
|
|
|
set $zvalue = $arg0 |
|
|
|
|
|
|
|
printf "[0x%08x] ", $zvalue |
|
|
|
|
|
|
|
if $zvalue == $eg.uninitialized_zval_ptr |
|
|
|
printf "*uninitialized* " |
|
|
|
end |
|
|
|
|
|
|
|
set $zcontents = *(zval *) $zcontents |
|
|
|
if $arg1 |
|
|
|
____printzv_contents $zcontents $arg1 |
|
|
|
else |
|
|
|
____printzv_contents $zcontents |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
define ____print_const_table |
|
|
|
set $ht = $arg0 |
|
|
|
set $p = $ht->pListHead |
|
|
|
|
|
|
|
while $p != 0 |
|
|
|
set $const = *(zend_constant *) $p->pData |
|
|
|
|
|
|
|
set $i = $ind |
|
|
|
while $i > 0 |
|
|
|
printf " " |
|
|
|
set $i = $i - 1 |
|
|
|
end |
|
|
|
|
|
|
|
if $p->nKeyLength > 0 |
|
|
|
printf "\"%s\" => ", $p->arKey |
|
|
|
else |
|
|
|
printf "%d => ", $p->h |
|
|
|
end |
|
|
|
|
|
|
|
____printzv_contents $const.value 0 |
|
|
|
set $p = $p->pListNext |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
define print_const_table |
|
|
|
set $ind = 1 |
|
|
|
printf "[0x%08x] {\n", $arg0 |
|
|
|
____print_const_table $arg0 |
|
|
|
printf "}\n" |
|
|
|
end |
|
|
|
|
|
|
|
define ____print_ht |
|
|
|
set $ht = $arg0 |
|
|
|
set $p = $ht->pListHead |
|
|
|
|