Browse Source

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.
pull/209/head
Reeze Xia 13 years ago
parent
commit
dedbba4e5b
  1. 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 $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

Loading…
Cancel
Save