end
document ____executor_globals
- portable way of accessing executor_globals
+ portable way of accessing executor_globals, set $eg
ZTS detection is automatically based on ext/standard module struct
end
end
document printzv
- prints content of zval
+ prints zval contents
end
define ____printzv_contents
set $zvalue = $arg0
set $type = $zvalue->type
- printf "(refcount=%d) ", $zvalue->refcount
+ printf "(refcount=%d", $zvalue->refcount
+ if $zvalue->is_ref
+ printf ",is_ref"
+ end
+ printf ") "
if $type == 0
printf "NULL"
end
if ! $arg1
printf "{\n"
set $ind = $ind + 1
- ____print_ht $zvalue->value.ht
+ ____print_ht $zvalue->value.ht 1
set $ind = $ind - 1
set $i = $ind
while $i > 0
printf "(%d): ", $ht->nNumOfElements
printf "{\n"
set $ind = $ind + 1
- ____print_ht $ht
+ ____print_ht $ht 1
set $ind = $ind - 1
set $i = $ind
while $i > 0
end
define ____print_ht
- set $ht = $arg0
+ set $ht = (HashTable*)$arg0
set $p = $ht->pListHead
while $p != 0
- set $zval = *(zval **)$p->pData
-
set $i = $ind
while $i > 0
printf " "
else
printf "%d => ", $p->h
end
+
+ if $arg1 == 0
+ printf "%p\n", (void*)$p->pData
+ end
+ if $arg1 == 1
+ set $zval = *(zval **)$p->pData
+ ____printzv $zval 1
+ end
+ if $arg1 == 2
+ printf "%s\n", (char*)$p->pData
+ end
- ____printzv $zval 1
set $p = $p->pListNext
end
end
define print_ht
set $ind = 1
printf "[0x%08x] {\n", $arg0
- ____print_ht $arg0
+ ____print_ht $arg0 1
printf "}\n"
end
dumps elements of HashTable made of zval
end
+define print_htptr
+ set $ind = 1
+ printf "[0x%08x] {\n", $arg0
+ ____print_ht $arg0 0
+ printf "}\n"
+end
+
+document print_htptr
+ dumps elements of HashTable made of pointers
+end
+
+define print_htstr
+ set $ind = 1
+ printf "[0x%08x] {\n", $arg0
+ ____print_ht $arg0 2
+ printf "}\n"
+end
+
+document print_htstr
+ dumps elements of HashTable made of strings
+end
+
define ____print_ft
set $ht = $arg0
set $p = $ht->pListHead