summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gdbinit37
1 files changed, 24 insertions, 13 deletions
diff --git a/.gdbinit b/.gdbinit
index 8cdfaa6093..be2f007d27 100644
--- a/.gdbinit
+++ b/.gdbinit
@@ -47,23 +47,34 @@ define dump_bt
if $fst.function.common.scope
printf "%s->", $fst.function.common.scope->name
else
- ____executor_globals
- set $class_name_ptr = (char **)malloc(sizeof(char **))
- set $class_name_len = (int *)malloc(sizeof(int *))
-
- if basic_functions_module.zts
- set $dup = zend_get_object_classname($t->object, $class_name_ptr, $class_name_len, $tsrm_ls)
- else
- set $dup = zend_get_object_classname($t->object, $class_name_ptr, $class_name_len)
+ if !$eg && !basic_functions_module.zts
+ ____executor_globals
end
- printf "%s->", *$class_name_ptr
+ 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 !$dup
- call _efree(*$class_name_ptr, "[GDB]", 0, "", 0)
+ if !$known_class
+ printf "Unknow->"
end
- call (void) free($class_name_ptr)
- call (void) free($class_name_len)
end
else
if $fst.function.common.scope