[前][次][番号順一覧][スレッド一覧]

ruby-changes:24375

From: drbrain <ko1@a...>
Date: Wed, 18 Jul 2012 10:02:22 +0900 (JST)
Subject: [ruby-changes:24375] drbrain:r36426 (trunk): * lib/debug.rb: Added toplevel documentation. Based on patch by Oscar

drbrain	2012-07-18 10:02:12 +0900 (Wed, 18 Jul 2012)

  New Revision: 36426

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=36426

  Log:
    * lib/debug.rb:  Added toplevel documentation.  Based on patch by Oscar
      Del Ben.  [Bug #6743], fixes #146 on github.

  Modified files:
    trunk/ChangeLog
    trunk/lib/debug.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 36425)
+++ ChangeLog	(revision 36426)
@@ -1,3 +1,8 @@
+Wed Jul 18 10:00:54 2012  Eric Hodel  <drbrain@s...>
+
+	* lib/debug.rb:  Added toplevel documentation.  Based on patch by Oscar
+	  Del Ben.  [Bug #6743], fixes #146 on github.
+
 Wed Jul 18 09:33:59 2012  NAKAMURA Usaku  <usa@r...>
 
 	* test/win32ole/test_win32ole_event.rb (TestWIN32OLE_EVENT): use
Index: lib/debug.rb
===================================================================
--- lib/debug.rb	(revision 36425)
+++ lib/debug.rb	(revision 36426)
@@ -12,18 +12,178 @@
 require 'tracer'
 require 'pp'
 
-class Tracer
+class Tracer # :nodoc:
   def Tracer.trace_func(*vars)
     Single.trace_func(*vars)
   end
 end
 
-SCRIPT_LINES__ = {} unless defined? SCRIPT_LINES__
+SCRIPT_LINES__ = {} unless defined? SCRIPT_LINES__ # :nodoc:
 
+##
+# This library provides debugging functionality to Ruby.
+#
+# To add a debugger to your code, start by requiring +debug+ in your
+# program:
+#
+#   def say(word)
+#     require 'debug'
+#     puts word
+#   end
+#
+# This will cause Ruby to interrupt execution and show a prompt when the +say+
+# method is run.
+#
+# Once you're inside the prompt, you can start debugging your program.
+#
+#   (rdb:1) p word
+#   "hello"
+#
+# == Getting help
+#
+# You can get help at any time by pressing +h+.
+#
+#   (rdb:1) h
+#   Debugger help v.-0.002b
+#   Commands
+#     b[reak] [file:|class:]<line|method>
+#     b[reak] [class.]<line|method>
+#                                set breakpoint to some position
+#     wat[ch] <expression>       set watchpoint to some expression
+#     cat[ch] (<exception>|off)  set catchpoint to an exception
+#     b[reak]                    list breakpoints
+#     cat[ch]                    show catchpoint
+#     del[ete][ 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
+#     tr[ace] (on|off)           set trace mode of current thread
+#     tr[ace] (on|off) all       set trace mode of all threads
+#     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 instance variables of object
+#     v[ar] c[onst] <object>     show constants of object
+#     m[ethod] i[nstance] <obj>  show methods of object
+#     m[ethod] <class|module>    show instance methods of class or module
+#     th[read] l[ist]            list all threads
+#     th[read] c[ur[rent]]       show current thread
+#     th[read] [sw[itch]] <nnn>  switch thread context to nnn
+#     th[read] stop <nnn>        stop thread nnn
+#     th[read] resume <nnn>      resume thread nnn
+#     p expression               evaluate expression and print its value
+#     h[elp]                     print this help
+#     <everything else>          evaluate
+#
+# == Usage
+#
+# The following is a list of common functionalities that the debugger
+# provides.
+#
+# === Navigating through your code
+#
+# In general, a debugger is used to find bugs in your program, which
+# often means pausing execution and inspecting variables at some point
+# in time.
+#
+# Let's look at an example:
+#
+#   def my_method(foo)
+#     require 'debug'
+#     foo = get_foo if foo.nil?
+#     raise if foo.nil?
+#   end
+#
+# When you run this program, the debugger will kick in just before the
+# +foo+ assignment.
+#
+#   (rdb:1) p foo
+#   nil
+#
+# In this example, it'd be interesting to move to the next line and
+# inspect the value of +foo+ again. You can do that by pressing +n+:
+#
+#   (rdb:1) n # goes to next line
+#   (rdb:1) p foo
+#   nil
+#
+# You now know that the original value of +foo+ was nil, and that it
+# still was nil after calling +get_foo+.
+#
+# Other useful commands for navigating through your code are:
+#
+# +c+::
+#   Runs the program until it either exists or encounters another breakpoint.
+#   You usually press +c+ when you are finished debugging your program and
+#   want to resume its execution.
+# +s+::
+#   Steps into method definition. In the previous example, +s+ would take you
+#   inside the method definition of +get_foo+.
+# +r+::
+#   Restart the program.
+# +q+::
+#   Quit the program.
+#
+# === Inspecting variables
+#
+# You can use the debugger to easily inspect both local and global variables.
+# We've seen how to inspect local variables before:
+#
+#   (rdb:1) p my_arg
+#   42
+#
+# You can also pretty print the result of variables or expressions:
+#
+#   (rdb:1) pp %w{a very long long array containing many words}
+#   ["a",
+#    "very",
+#    "long",
+#    ...
+#   ]
+#
+# You can list all local variables with +v l+:
+#
+#   (rdb:1) v l
+#     foo => "hello"
+#
+# Similarly, you can show all global variables with +v g+:
+#
+#   (rdb:1) v g
+#     all global variables
+#
+# Finally, you can omit +p+ if you simply want to evaluate a variable or
+# expression
+#
+#   (rdb:1) 5**2
+#   25
+#
+# === Going beyond basics
+#
+# Ruby Debug provides more advanced functionalities like switching
+# between threads, setting breakpoints and watch expressions, and more.
+# The full list of commands is available at any time by pressing +h+.
+#
+# == Staying out of trouble
+#
+# Make sure you remove every instance of +require 'debug'+ before
+# shipping your code. Failing to do so may result in your program
+# hanging unpredictably.
+#
+# Debug is not available in safe mode.
+
 class DEBUGGER__
-  MUTEX = Mutex.new
+  MUTEX = Mutex.new # :nodoc:
 
-  class Context
+  class Context # :nodoc:
     DEBUG_LAST_CMD = []
 
     begin

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]