- Ruby 基础
- Ruby 首页
- Ruby 概述
- Ruby 环境搭建
- Ruby 语法
- Ruby 类和对象
- Ruby 变量
- Ruby 运算符
- Ruby 注释
- Ruby IF...ELSE 语句
- Ruby 循环
- Ruby 方法
- Ruby 块
- Ruby 模块
- Ruby 字符串
- Ruby 数组
- Ruby 哈希表
- Ruby 日期和时间
- Ruby 范围
- Ruby 迭代器
- Ruby 文件 I/O
- Ruby 异常
- Ruby 高级
- Ruby 面向对象
- Ruby 正则表达式
- Ruby 数据库访问
- Ruby Web 应用程序
- Ruby 发送邮件
- Ruby 套接字编程
- Ruby/XML, XSLT
- Ruby Web 服务
- Ruby Tk 指南
- Ruby/LDAP 教程
- Ruby 多线程
- Ruby 内置函数
- Ruby 预定义变量
- Ruby 预定义常量
- Ruby 相关工具
- Ruby 有用资源
- Ruby 快速指南
- Ruby 有用资源
- Ruby 讨论
- Ruby on Rails 教程
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]#