Ruby - 调试器
不管一种语言使用起来多么容易,如果它超过几行,它通常会包含一些错误。 为了帮助处理错误,Ruby 的标准发行版包含一个调试器。
要启动 Ruby 调试器,请使用命令行选项 -r debug 加载调试库。 调试器在第一行可执行代码之前停止并要求输入用户命令。
使用语法
这是使用 ruby 调试器的用法语法 −
$ ruby -r debug filename[, ...]
Ruby 调试器命令
这是一个完整的命令列表,您可以在调试程序时使用这些命令。 在这里,没有必要使用完整的关键字来给出命令,[...]里面给出的部分是选项。
序号 | 命令 & 描述 |
---|---|
1 | b[reak] [< file| class>:]< line| method> 将断点设置到某个位置。 断点是您要暂停程序执行以进行调试的地方。 |
2 | wat[ch] expression 设置观察点。 |
3 | cat[ch] (exception|off) 将捕获点设置为异常。 |
4 |
b[reak] 显示断点和观察点。 |
5 | del[ete] [n] 删除断点。 |
6 | disp[lay] expression 显示 表达式 的值。 |
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] object 显示 object 的实例变量 |
22 | v[ar] c[onst] object 显示 object 的常量。 |
23 | m[ethod] i[instance] object 显示 object 的实例方法。 |
24 | m[ethod] class| module 显示类或模块的实例方法。 |
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 expression 评估 表达式 |
32 | h[elp] 显示帮助信息 |
33 | everything else 进行评价。 |
示例
考虑以下需要调试的文件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]#