diff options
author | Reeze Xia <reeze@php.net> | 2012-10-01 03:10:15 +0800 |
---|---|---|
committer | Reeze Xia <reeze@php.net> | 2012-10-01 03:10:15 +0800 |
commit | dedbba4e5bab1e3520c9cc43b094a3a057b0316f (patch) | |
tree | 59c9379ac07445b146f5aebbb2d5fa7e963ab1c6 /.gdbinit | |
parent | 752280d4d2da31f9a761c53709f15f8d89fb81eb (diff) | |
download | php-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-- | .gdbinit | 37 |
1 files changed, 24 insertions, 13 deletions
@@ -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 |