From: mrilu Date: 2000-04-02T04:04:40+02:00 Subject: [ruby-talk:02339] Patch: Debugger help 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:] 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] show object's methods + m[ethod] 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 < set breakpoint to some position + I'm a little bit unsure here. break doesn't seem to use filename. + wat[ch] set watchpoint to some expression + b[reak] list breakpoints + del[ele][ nnn] delete some or all breakpoints + disp[lay] 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] show object's instance variables + v[ar] c[onst] show object's constants + m[ethod] i[nstance] show object's methods + m[ethod] 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] stop thread nnn + th[read] stop alias for th[read] + th[read] c[ur[rent]] alias for th[read] + th[read] resume run thread nnn + p expression evaluate expression and print it's value + h[elp] print this help + evaluate +EOHELP + end def display_expressions(binding)