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:
37
.gdbinit
37
.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 !$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
|
||||
|
||||
Reference in New Issue
Block a user