Ruby Debug
-
调试器
语言的易用性无关紧要,如果语言多于几行,通常会包含一些错误。为了帮助处理错误,Ruby的标准发行版包括调试器。为了启动Ruby调试器,请使用命令行选项-r debug加载调试库。调试器在可执行代码的第一行之前停止,并要求输入用户命令。使用语法$ ruby -r debug filename[, ...]
-
Ruby调试器命令
这是命令的完整列表,您可以在调试程序时使用这些命令。在这里,不必使用complete关键字来发出命令,[...]内部给出的部分是选项。command 说明 b[reak] [< file| class>:]< line| method> 将断点设置到某个位置。断点是您出于调试目的而希望暂停程序执行的地方。 wat[ch] expression 设置观察点。 cat[ch] (exception|off) 将捕获点设置为异常。 b[reak] 显示断点和观察点。 del[ete] [n] 删除断点。 disp[lay] expression 显示表达式的值。 undisp[lay] [ n] 删除n的显示 c[ont] 继续执行。 s[tep] [ n] 执行下n行,进入方法。 n[ext] [ n] 执行下n行单步执行方法。 w[here] 显示堆叠框架 f[rame] 在哪里的同义词。 l[ist][<-| n- m>] 显示从n到m的源代码行。 up [ n] 在堆栈帧中上移n个层。 down [ n] 在堆栈帧中向下移动n个级别。 fin[ish] 完成当前方法的执行。 tr[ace] [on|off] 切换跟踪模式的开和关。 q[uit] 退出调试器。 v[ar] g[lobal] 显示全局变量。 v[ar] l[ocal] 显示局部变量。 v[ar] i[instance] object 显示对象的实例变量 v[ar] c[onst] object 显示对象的常数。 m[ethod] i[instance] object 显示对象的实例方法。 m[ethod] class| module 显示类或模块的实例方法。 th[read] l[ist] 显示线程。 th[read] c[ur[rent]] 显示当前线程。 th[read] n 停止指定的线程。 th[read] stop > n [th]的同义词。 th[read] c[ur[rent]] n> th [read] n的同义词 th[read] resume > 恢复线程n p expression 计算表达式 h[elp] 显示帮助信息 everything else 评估。 -
示例
考虑以下文件hello.rb,需要对其进行调试-class Hello def initialize( hello ) @hello = hello end def hello @hello end end salute = Hello.new( "Hello, Mac!" ) puts salute.hello
这是捕获的一个交互式会话。-$ 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!