[ruby-talk:02339] Patch: Debugger help

From: mrilu <mrilu@...>
Date: 2000-04-02 02:04:40 UTC
List: ruby-talk #2339
I'm not sure I'm doing the right thing here, but correct me how I should 
behave in this community.

Today I found debugger. I was really delighted because perl -d -e'' was 
the way I managed to get trough perl jungle.

I hope somebody could clarify relationship between eval.rb, irb (why it 
isn't part of the standard distribution?) and debug.rb. And hopefully that
explanation finds it's way into documentation and at least to the FAQ.

Here's patch for debug.rb to print helps. I haven't used Ruby's debugger
so I  assumed it borrows quite a lot from perl's debugger and then guessed
the rest. There's few comments however, so this this by no means the 
final version.

Few points I want to discuss about:

Should I post real patches as a attachment or as a textual part of 
the message or is there some vague limit in kilobytes when one should
move from body to attachments?

+  b[reak] [filename:]<line>  set breakpoint to some position
+    I'm a little bit unsure here. break doesn't seem to use filename.

Why break with line number doesn't seem to use possible text before it 
(I guessed it was a filename)?

+  m[ethod] i[nstance] <obj>  show object's methods
+  m[ethod] <obj>             show object's instance methods
+    Should these method listings be in other order?

From debugger's code I get impression that keyword 'instance' is matched
in wrong 'when regexp'.

+  th[read] c[ur[rent]]       list current threads
+    Stopped threads?

Bad name, IMO, if this lists stopped threads. 'Current' is already 
overloaded in stopping threads.

And, please find better location for the help text.

Index: debug.rb
===================================================================
RCS file: /home/cvs/ruby/lib/debug.rb,v
retrieving revision 1.10
diff -u -r1.10 debug.rb
--- debug.rb    2000/03/17 08:58:20     1.10
+++ debug.rb    2000/04/02 00:38:00
@@ -411,13 +411,59 @@
 
          when /^\s*p\s+/
            p debug_eval($', binding)
-
+             
+         when /^\s*h(?:elp)?/
+             debug_print_help()
+             
          else
            v = debug_eval(input, binding)
            p v unless (v == nil)
          end
        end
       end
+    end
+
+    def debug_print_help
+      print <<EOHELP
+Debugger help v.-0.001b
+Commands
+  b[reak] [filename:]<line>  set breakpoint to some position
+    I'm a little bit unsure here. break doesn't seem to use filename.
+  wat[ch] <expression>       set watchpoint to some expression
+  b[reak]                    list breakpoints
+  del[ele][ nnn]             delete some or all breakpoints
+  disp[lay] <expression>     add expression into display expression list
+  undisp[lay][ nnn]          delete one particular or all display expressions
+  c[ont]                     run until program ends or hit breakpoint
+  s[tep][ nnn]               step (into methods) one line or till line nnn
+  n[ext][ nnn]               go over one line or till line nnn
+  w[here]                    display frames
+  f[rame]                    alias for where
+  l[ist][ (-|nn-mm)]         list program, - lists backwards
+                             nn-mm lists given lines
+  up[ nn]                    move to higher frame
+  down[ nn]                  move to lower frame
+  fin[ish]                   return to outer frame
+  q[uit]                     exit from debugger
+  v[ar] g[lobal]             show global variables
+  v[ar] l[ocal]              show local variables
+  v[ar] i[nstance] <object>  show object's instance variables
+  v[ar] c[onst] <object>     show object's constants
+  m[ethod] i[nstance] <obj>  show object's methods
+  m[ethod] <obj>             show object's instance methods
+    Should these method listings be in other order?
+  th[read] l[ist]            list all threads
+  th[read] c[ur[rent]]       list current threads
+    Stopped threads?
+  th[read] <nnn>             stop thread nnn
+  th[read] stop <nnn>        alias for th[read] <nnn>
+  th[read] c[ur[rent]] <nnn> alias for th[read] <nnn>
+  th[read] resume <nnn>      run thread nnn
+  p expression               evaluate expression and print it's value
+  h[elp]                     print this help
+  <everything else>          evaluate
+EOHELP
+
     end
 
     def display_expressions(binding)


In This Thread

Prev Next