1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

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.
This commit is contained in:
Reeze Xia
2012-10-01 03:10:15 +08:00
parent 752280d4d2
commit dedbba4e5b

View File

@@ -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 !$dup
call _efree(*$class_name_ptr, "[GDB]", 0, "", 0)
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 "Unknow->"
end
call (void) free($class_name_ptr)
call (void) free($class_name_len)
end
else
if $fst.function.common.scope