From 4aa1cfc2c3e196a9434e8415c680638d914b35e1 Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 19 Oct 2009 02:34:40 +0000 Subject: * .gdbinit (rb_ps): dump all threads and their callstacks. based on [ruby-core:26155] by Joshua ben Jore . git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25399 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- .gdbinit | 38 ++++++++++++++++++++++++++++++++++++++ ChangeLog | 5 +++++ 2 files changed, 43 insertions(+) diff --git a/.gdbinit b/.gdbinit index a542b71ba0..f486d36ded 100644 --- a/.gdbinit +++ b/.gdbinit @@ -652,3 +652,41 @@ define iseq print *(ADJUST*)($arg0) end end + +define rb_ps + rb_ps_vm ruby_current_vm +end +document rb_ps +Dump all threads and their callstacks +end + +define rb_ps_vm + print $ps_vm = (rb_vm_t*)$arg0 + set $ps_threads = (st_table*)$ps_vm->living_threads + if $ps_threads->entries_packed + set $ps_threads_i = 0 + while $ps_threads_i < $ps_threads->num_entries + set $ps_threads_key = (st_data_t)$ps_threads->bins[$ps_threads_i * 2] + set $ps_threads_val = (st_data_t)$ps_threads->bins[$ps_threads_i * 2 + 1] + rb_ps_thread $ps_threads_key $ps_threads_val + set $ps_threads_i = $ps_threads_i + 1 + end + else + set $ps_threads_ptr = (st_table_entry*)$ps_threads->head + while $ps_threads_ptr + set $ps_threads_key = (st_data_t)$ps_threads_ptr->key + set $ps_threads_val = (st_data_t)$ps_threads_ptr->record + rb_ps_thread $ps_threads_key $ps_threads_val + set $ps_threads_ptr = (st_table_entry*)$ps_threads_ptr->fore + end + end +end +document rb_ps_vm +Dump all threads in a (rb_vm_t*) and their callstacks +end + +define rb_ps_thread + set $ps_thread = (struct RTypedData*)$arg0 + set $ps_thread_id = $arg1 + print $ps_thread_th = (rb_thread_t*)$ps_thread->data +end diff --git a/ChangeLog b/ChangeLog index 6629d21f67..d9330d6de8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Oct 19 11:34:38 2009 Nobuyoshi Nakada + + * .gdbinit (rb_ps): dump all threads and their callstacks. based + on [ruby-core:26155] by Joshua ben Jore . + Mon Oct 19 10:59:36 2009 Nobuyoshi Nakada * iseq.c (prepare_iseq_build, rb_iseq_build_for_ruby2cext): -- cgit v1.2.3