debug.rb

Ruby调试器,用于调试ruby脚本代码。

ruby档案中还有供Emacs使用的接口ruby/misc/rubydb[23]x.el

rubydb2x.el适用于Emacs 19.2x 以前版本,而rubydb3x.el则对应于Emacs 19.3x以后的版本。

用法:

$ ruby -rdebug foo.rb

而在Emacs中则为

M-x load-library rubydb3x.el
M-x rubydb

调试命令:

以下就是调试器中可用的命令名和用法一览。每条命令名都有简写形式。

若输入了下列命令以外的内容时,将被当作ruby表达式来处理。

break
break [<file>:]<position>|<class>:<method>

设置断点(break point)。若省略参数时,则显示设置的断点。

设置的断点的格式为 程序文件名:位置 或者 类名:方法名位置是指文件中的行号或方法名。 若省略文件名:,则看作是指定了当前运行中的文件。

该命令简写为 b

catch <an Exception>

设置Catch Point,一旦发生异常时调试器将停在Catch Point的地方。若省略参数时,将显示设定的Catch Point。

若实际出现的异常是<an Exception>的子类的话,调试器会停止运行。StandardError中设定了默认的Catch Point。

若将<an Exception>设为off的话,即使发生了异常,调试器也不会停止运行。

该命令简写为 cat

watch <expression>

设置Watch Point,一旦表达式 <expression> 的值发生变化时,调试器将停在Watch Point的地方。

该命令简写为 wat

delete [nnn]

删除指定的断点。若省略参数时,将删除所有的断点。

该命令简写为 del

display <expression>

设置display表达式,每当处理过程停止时都会计算<expression>。省略参数时,将显示所有的display表达式。

该命令简写为 disp

undisplay <nnn>

删除指定的display表达式。若省略参数时,将删除所有的display表达式。

该命令简写为 undisp

cont

继续进行处理过程,直到脚本结束或遇到下一个断点。

该命令简写为 c

step [nnn]

一行一行地进行处理。若指定了参数的话,就只处理指定行数的内容。它会进入方法内部。

该命令简写为 s

next [nnn]

一行一行地进行处理。若指定了参数的话,就只处理指定行数的内容。它与step [nnn]的区别在于,遇到方法调用时它不会进入方法的内部。

该命令简写为 n

where
frame

显示frame的堆栈和当前的frame位置。

该命令简写为 wf

list [(-|nn-mm)]

显示脚本。若参数为`-'则显示上一行。若为nn-mm形式,则显示指定范围行的脚本。

该命令简写为 l

up [nn]

转移到上级frame。

down [nn]

转移到下级frame。

finish

继续进行处理过程,直到转移到外侧frame为止。

该命令简写为 fin

trace [(on|off)]

更改跟踪模式的设定。若将跟踪模式设为on的话,在以后的运行过程中将会显示方法调用关系。若省略参数时,则显示当前的模式。

该命令简写为 tr

quit

中断脚本,终止调试器的运行。

该命令简写为 q

var g[lobal]
var l[ocal]
var i[nstance] <object>
var c[onst] <object>

分别表示全局变量、局部变量、对象<object>的实例变量、<object>的常数。

该命令简写为 v

method i[nstance] <object>
method <class|module>

分别表示对象<object>的实例方法、类方法或模块方法。

该命令简写为 m

thread l[ist]

线程一览表。

该命令简写为 th

thread c[ur[rent]]

显示当前线程。

thread <nnn>
thread sw[itch] <nnn>

将运行线程切换为<nnn>

thread stop <nnn>
thread c[ur[rent]] <nnn>

挂起<nnn>线程。

thread resume <nnn>

重启<nnn>线程。

p <expression>

显示ruby表达式<expression>的结果。

help

调试命令一览表。

该命令简写为 h