Ruby 调试器



无论语言使用起来多么容易,如果代码超过几行,通常都会包含一些bug。为了帮助处理bug,Ruby的标准发行版包含一个调试器。

为了启动Ruby调试器,请使用命令行选项-r debug加载debug库。调试器会在第一行可执行代码之前停止,并请求用户命令输入。

使用方法

以下是使用ruby调试器的使用方法:

$ ruby -r debug filename[, ...]

Ruby 调试器命令

这是一个完整的命令列表,您可以在调试程序时使用。这里不需要使用完整的关键字来发出命令,方括号[...]内的部分是可选的。

序号 命令及描述
1

b[reak] [< 文件| 类>:]< 行号| 方法>

设置断点到某个位置。断点是您希望暂停程序执行以进行调试的位置。

2

wat[ch] 表达式

设置监视点。

3

cat[ch] (异常|off)

为异常设置捕捉点。

4

b[reak]

显示断点和监视点。

5

del[ete] [n]

删除断点。

6

disp[lay] 表达式

显示表达式的值。

7

undisp[lay] [ n]

移除n的显示

8

c[ont]

继续执行。

9

s[tep] [ n]

执行接下来的n行,进入方法内部。

10

n[ext] [ n]

执行接下来的n行,跳过方法内部。

11

w[here]

显示堆栈帧。

12

f[rame]

where的同义词。

13

l[ist][<-| n- m>]

显示从n到m的源代码行。

14

up [ n]

在堆栈帧中向上移动n级。

15

down [ n]

在堆栈帧中向下移动n级。

16

fin[ish]

完成当前方法的执行。

17

tr[ace] [on|off]

切换跟踪模式的开关。

18

q[uit]

退出调试器。

19

v[ar] g[lobal]

显示全局变量。

20

v[ar] l[ocal]

显示局部变量。

21

v[ar] i[instance] 对象

显示对象的实例变量。

22

v[ar] c[onst] 对象

显示对象的常量。

23

m[ethod] i[instance] 对象

显示对象的实例方法。

24

m[ethod] 类| 模块

显示类或模块的实例方法。

25

th[read] l[ist]

显示线程。

26

th[read] c[ur[rent]]

显示当前线程。

27

th[read] n

停止指定的线程。

28

th[read] stop >

th[read] n 的同义词。

29

th[read] c[ur[rent]] n>

th[read] n 的同义词

30

th[read] resume >

恢复线程n

31

p 表达式

计算表达式的值。

32

h[elp]

显示帮助信息。

33

其他任何内容

计算表达式。

示例

考虑以下需要调试的文件hello.rb

#!/usr/bin/env ruby
class Hello
   def initialize( hello )
      @hello = hello
   end
   def hello
      @hello
   end
end

salute = Hello.new( "Hello, Mac!" )
puts salute.hello

这里捕获了一个交互式会话。给出的命令以粗体显示:

[root@ruby]# ruby -r debug hello.rb
Debug.rb
Emacs support available.

hello.rb:3:class Hello
(rdb:1) v l
   salute => nil
(rdb:1) b 10
Set breakpoint 1 at hello.rb:10
(rdb:1) c
Hello, Mac!
[root@ruby]#
ruby_associated_tools.htm
广告