Hello all,I’m doing a multithreaded ruby application,
I want to examine the thread because the application’s logic is quite
complex,
so it helps if I can see each thread clearly,
but the problem is, if I use IDE with ruby-debug-ide, when pause at
breakpoint,
it always seems to just have two threads(there’s not a thread view?),
not like previously when I develop java application, when you pause,
you can see there’s how many threads very easily.
Is there anytool for examining ruby’s thread?
2009/8/5 femto Zheng [email protected]:
Hello all,I’m doing a multithreaded ruby application,
I want to examine the thread because the application’s logic is quite complex,
so it helps if I can see each thread clearly,
but the problem is, if I use IDE with ruby-debug-ide, when pause at breakpoint,
it always seems to just have two threads(there’s not a thread view?),
not like previously when I develop java application, when you pause,
you can see there’s how many threads very easily.
Is there anytool for examining ruby’s thread?
What kind of examination do you want to do? Do you want to see how
many threads there are? Do you want to know what each thread does
(e.g. current stack trace)?
Cheers
robert
Yes, at least I need how many threads there are,
and if stacktrace of each thread would be better.
On Thu, Aug 6, 2009 at 4:17 PM, Robert
Klemme[email protected] wrote:
Please do not top post.
2009/8/5 femto Zheng [email protected]:
Yes, at least I need how many threads there are,
and if stacktrace of each thread would be better.Did you look at the documentation?
Yes,I’ve found the Thread.list fulfills my needs,Thanks.
do you have any means for examning every thread’s stacktrace?
by the way, reply at the top is very easy because I’m using gmail,
so I can collapse other’s reply very easily,
2009/8/6 femto Zheng [email protected]:
by the way, reply at the top is very easy because I’m using gmail,
so I can collapse other’s reply very easily,
You can do so as well when not top posting. Please also consider that
others may be reading the same content via different media / tools
which might not provide this capability.
Cheers
robert
Please do not top post.
2009/8/5 femto Zheng [email protected]:
Yes, at least I need how many threads there are,
and if stacktrace of each thread would be better.
Did you look at the documentation?
http://www.ruby-doc.org/core-1.9/classes/Thread.html
http://www.ruby-doc.org/core-1.9/classes/ThreadGroup.html
Kind regards
robert
On 8/6/09, femto Zheng [email protected] wrote:
Yes,I’ve found the Thread.list fulfills my needs,Thanks.
do you have any means for examning every thread’s stacktrace?
There does not seem to be a way to get the backtrace of another thread
– even from within the debugger. This is a shame, because as you say
it’s useful for debugging. There ought to be a Thread#caller or
Thread#backtrace method, which works like #caller but on another
thread.
I would have thought that you’d at least be able to use the ‘thread
switch’ command in the debugger, and then ‘where’ once you’re in that
thread to see its backtrace, but that doesn’t seem to work either.
by the way, reply at the top is very easy because I’m using gmail,
so I can collapse other’s reply very easily,
Don’t let me get started on the evils of bottom-quoting. Just let me
note that it’s not the approved style on this list.
2009/8/6 Caleb C. [email protected]:
I would have thought that you’d at least be able to use the ‘thread
switch’ command in the debugger, and then ‘where’ once you’re in that
thread to see its backtrace, but that doesn’t seem to work either.
You can certainly cook up something with set_trace_func. This is
however a bit slow.
Cheers
robert
Caleb C. wrote:
On 8/6/09, femto Zheng [email protected] wrote:
Yes,I’ve found the Thread.list fulfills my needs,Thanks.
do you have any means for examning every thread’s stacktrace?There does not seem to be a way to get the backtrace of another thread
– even from within the debugger. This is a shame, because as you say
it’s useful for debugging. There ought to be a Thread#caller or
Thread#backtrace method, which works like #caller but on another
thread.
IIRC this has been requested and discussed a few times, and it might be
available in development versions of 1.9.2[1], but not 1.8.x, AFAIK.
[1] http://redmine.ruby-lang.org/issues/show/977
[2] google “ruby Thread#backtrace” for more discussion.