Permalink
Browse files

Merge branch 'pull-request/209' into PHP-5.4

* pull-request/209:
  Eliminate process running requirement of dump_bt in .gdbinit
  Add missing ____executor_globals in dump_bt if needed
  Implemented FR #63188 (Display class name when debugging with gdb macro zbacktrace)
  • Loading branch information...
2 parents 40bb925 + dedbba4 commit c95fd5f758912c23e74ac90e6bf56002d4a5947a @smalyshev smalyshev committed Oct 1, 2012
Showing with 49 additions and 8 deletions.
  1. +49 −8 .gdbinit
View
@@ -38,12 +38,53 @@ define dump_bt
set $t = $arg0
while $t
printf "[%p] ", $t
- if $t->function_state.function->common.function_name
- if $t->function_state.arguments
- set $count = (int)*($t->function_state.arguments)
- printf "%s(", $t->function_state.function->common.function_name
+ set $fst = $t->function_state
+ if $fst.function->common.function_name
+ if $fst.arguments
+ set $count = (int)*($fst.arguments)
+
+ if $t->object
+ if $fst.function.common.scope
+ printf "%s->", $fst.function.common.scope->name
+ else
+ if !$eg && !basic_functions_module.zts
+ ____executor_globals
+ end
+
+ set $known_class = 0
+ if $eg
+ set $handle = $t->object.value.obj.handle
+ set $handlers = $t->object.value.obj.handlers
+ set $zobj = (zend_object *)$eg.objects_store.object_buckets[$handle].bucket.obj.object
+
+ if $handlers->get_class_entry == &zend_std_object_get_class
+ set $known_class = 1
+
+ if $handlers.get_class_name
+ if $handlers.get_class_name != &zend_std_object_get_class_name
+ set $known_class = 0
+ end
+ end
+
+ if $known_class
+ printf "%s->", $zobj->ce.name
+ end
+ end
+ end
+
+ if !$known_class
+ printf "Unknown->"
+ end
+ end
+ else
+ if $fst.function.common.scope
+ printf "%s::", $fst.function.common.scope->name
+ end
+ end
+
+ printf "%s(", $fst.function->common.function_name
while $count > 0
- set $zvalue = *(zval **)($t->function_state.arguments - $count)
+ set $zvalue = *(zval **)($fst.arguments - $count)
set $type = $zvalue->type
if $type == 0
printf "NULL"
@@ -73,7 +114,7 @@ define dump_bt
if $type == 7
printf "resource(#%d)", $zvalue->value.lval
end
- if $type == 8
+ if $type == 8
printf "constant"
end
if $type == 9
@@ -89,7 +130,7 @@ define dump_bt
end
printf ") "
else
- printf "%s() ", $t->function_state.function->common.function_name
+ printf "%s() ", $fst.function->common.function_name
end
else
printf "??? "
@@ -600,7 +641,7 @@ define zmemcheck
end
end
if $not_found
- printf "no such block that begins at %p.\n", $aptr
+ printf "no such block that begins at %p.\n", $aptr
end
if $arg0 == 0
printf "-------------------------------------------------------------------------------\n"

0 comments on commit c95fd5f

Please sign in to comment.