ASPN ActiveState Programmer Network
ActiveState
/ Home / Perl / PHP / Python / Tcl / XSLT /
/ Safari / My ASPN /
Cookbooks | Documentation | Mailing Lists | Modules | News Feeds | Products | User Groups


Recent Messages
List Archives
About the List
List Leaders
Subscription Options

View Subscriptions
Help

View by Topic
ActiveState
.NET Framework
Open Source
Perl
PHP
Python
Tcl
Web Services
XML & XSLT

View by Category
Database
General
SOAP
System Administration
Tools
User Interfaces
Web Programming
XML Programming


MyASPN >> Mail Archive >> ruby-talk
ruby-talk
Re: Debugger performance
by Caleb Clausen other posts by this author
Apr 30 2005 6:37PM messages near this date
Re: Installing all gems | Re: Cloning into an object
On Fri, 29 Apr 2005 09:35:16 +0900, Lothar Scholz wrote:
>  Hello John,
>  
>  JL> Are there any tips for optimizing the perf of the ruby debugger?I use:
>   
>  JL> ruby -r debug -rubygems foo.rb
>   
>  JL> Thanks
>  JL> -John
>  JL> http://www.iunknown.com
>  
>  There is no real chance for the ruby debugger. But you can try the

I have looked at the performance problems with debug.rb, (the slowness
was very annoying for me) and come to these conclusions:

1) debug.rb is slow because it uses set_trace_func. set_trace_func will
make anything slow.

2) Some features of a debugger (single-stepping, watchpoints probably)
require set_trace_func. But many cases are not. The user won't notice
slowness in single-stepping, and will just have to live with slow
watchpoints. But a lot of the time, you're just doing 'c' (continue) with
breakpoints set. Can we make that faster?

3) You could implement breakpoints via polymorphism as follows: figure out
what class and method the breakpoint is in. Override that method to enable
and disable set_trace_func as the debugger likes when the method is
entered and exited. Use the existing technique (in debug.rb) to detect
when you're at the line that actually has the breakpoint. set_trace_func
should be turned off most of the time this way, making for an order of
magnitude difference.

4) The watchpoints don't seem that useful. Are they watching values
instead of variables?

I wanted to make my own mini-debugger based on these ideas. Then I
decided it would be easier to patch debug.rb. Then I never figured out
enough about debug.rb to make it happen. It seems like this could be a
pretty easy patch.....

Ps: Lothar's way is probably better.

Privacy Policy | Email Opt-out | Feedback | Syndication
© ActiveState Software Inc. All rights reserved