> (gdb) dump_bt $eg.current_execute_data
end
-define zmemcheck
- set $p = alloc_globals.head
- set $stat = "?"
- set $total_size = 0
- if $arg0 != 0
- set $not_found = 1
- else
- set $not_found = 0
- end
- printf " block size status file:line\n"
- printf "-------------------------------------------------------------------------------\n"
- while $p
- set $aptr = $p + sizeof(struct _zend_mem_header) + sizeof(align_test)
- if $arg0 == 0 || (void *)$aptr == (void *)$arg0
- if $p->magic == 0x7312f8dc
- set $stat = "OK"
- end
- if $p->magic == 0x99954317
- set $stat = "FREED"
- end
- if $p->magic == 0xfb8277dc
- set $stat = "CACHED"
- end
- set $filename = strrchr($p->filename->val, '/')
- if !$filename
- set $filename = $p->filename->val
- else
- set $filename = $filename + 1
- end
- printf " %p ", $aptr
- if $p->size == sizeof(struct _zval_struct) && ((struct _zval_struct *)$aptr)->type >= 0 && ((struct _zval_struct *)$aptr)->type < 10
- printf "ZVAL?(%-2d) ", $p->size
- else
- printf "%-9d ", $p->size
- end
- set $total_size = $total_size + $p->size
- printf "%-06s %s:%d", $stat, $filename, $p->lineno
- if $p->orig_filename
- set $orig_filename = strrchr($p->orig_filename, '/')
- if !$orig_filename
- set $orig_filename = $p->orig_filename
- else
- set $orig_filename = $orig_filename + 1
- end
- printf " <= %s:%d\n", $orig_filename, $p->orig_lineno
- else
- printf "\n"
- end
- if $arg0 != 0
- set $p = 0
- set $not_found = 0
- else
- set $p = $p->pNext
- end
- else
- set $p = $p->pNext
- end
- end
- if $not_found
- printf "no such block that begins at %p.\n", $aptr
- end
- if $arg0 == 0
- printf "-------------------------------------------------------------------------------\n"
- printf " total: %d bytes\n", $total_size
- end
-end
-
-document zmemcheck
- show status of a memory block.
- usage: zmemcheck [ptr].
- if ptr is 0, all blocks will be listed.
-end
-
define lookup_root
set $found = 0
if gc_globals->roots