summaryrefslogtreecommitdiff
path: root/.gdbinit
diff options
context:
space:
mode:
authorReeze Xia <reeze@php.net>2012-10-01 03:10:15 +0800
committerReeze Xia <reeze@php.net>2012-10-01 03:10:15 +0800
commitdedbba4e5bab1e3520c9cc43b094a3a057b0316f (patch)
tree59c9379ac07445b146f5aebbb2d5fa7e963ab1c6 /.gdbinit
parent752280d4d2da31f9a761c53709f15f8d89fb81eb (diff)
downloadphp-git-dedbba4e5bab1e3520c9cc43b094a3a057b0316f.tar.gz
Eliminate process running requirement of dump_bt in .gdbinit
Most of the time scope are avaible, but if not, it will be hard to get them, since we can't call function if no proccess running. try to get class name if we can.
Diffstat (limited to '.gdbinit')
-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