summaryrefslogtreecommitdiff
path: root/.gdbinit
diff options
context:
space:
mode:
authorXinchen Hui <laruence@php.net>2012-10-02 00:02:08 +0800
committerXinchen Hui <laruence@php.net>2012-10-02 00:02:08 +0800
commit8e9805bb792c193377d2525667e18035ab5aad18 (patch)
tree46e36a289ad1cd0c2b209473469bdb3090009116 /.gdbinit
parent139ac42bec942639db2f52ae16700e491114c898 (diff)
downloadphp-git-8e9805bb792c193377d2525667e18035ab5aad18.tar.gz
Now we can set the tsrm_ls manually
get(ZTS build): (gdb) zbacktrace You can't do that without a process to debug. (gdb) set_ts 0x4112500 (gdb) zbacktrace [0x2b232e83a1d8] call_user_func(array(2)[0x2b232e879528], array(1)[0x2b232e878fa0]) /tmp/1.php:4 [0x7fffcb2efd80] A->__call("xxx", array(1)[0x2b232e878fa0])
Diffstat (limited to '.gdbinit')
-rw-r--r--.gdbinit19
1 files changed, 16 insertions, 3 deletions
diff --git a/.gdbinit b/.gdbinit
index 87c9425615..e7a565dfa9 100644
--- a/.gdbinit
+++ b/.gdbinit
@@ -1,6 +1,19 @@
+define set_ts
+ set $tsrm_ls = $arg0
+end
+
+document set_ts
+ set the ts resource, it is impossible for gdb to
+ call ts_resource_ex while no process is running,
+ but we could get the resource from the argument
+ of frame info.
+end
+
define ____executor_globals
if basic_functions_module.zts
- set $tsrm_ls = ts_resource_ex(0, 0)
+ if !$tsrm_ls
+ set $tsrm_ls = ts_resource_ex(0, 0)
+ end
set $eg = ((zend_executor_globals*) (*((void ***) $tsrm_ls))[executor_globals_id-1])
set $cg = ((zend_compiler_globals*) (*((void ***) $tsrm_ls))[compiler_globals_id-1])
else
@@ -47,7 +60,7 @@ define dump_bt
if $fst.function.common.scope
printf "%s->", $fst.function.common.scope->name
else
- if !$eg && !basic_functions_module.zts
+ if !$eg
____executor_globals
end
@@ -73,7 +86,7 @@ define dump_bt
end
if !$known_class
- printf "Unknown->"
+ printf "(Unknown)->"
end
end
else