在Ruby中追踪代码?

6

有没有一种好的方法来运行脚本并查看所有步骤:

  • 执行的代码
  • 代码所在的文件
  • 返回的内容
  • 错误消息

这将是学习开源项目如何工作的好方法。

难道 Ruby 没有类似的解决方案吗?

例如:

require "httparty"
HTTParty.get "http://www.google.se"

然后它会运行代码并展示给我所有执行的代码,包括文件和行号、返回对象、错误信息等。

4个回答

5

我正在使用Ruby 1.9.2。为什么在运行“ruby--help”时没有-rtracer开关?当我运行“ruby -rtracer my_ruby_file.rb”时,它会像往常一样被打印出来,我看不到任何跟踪功能。 - never_had_a_name
@never_had_a_name,这不在--help中是因为已经记录的是-rlibrarytracer只是可用库之一。记录每个可用的库将是一个无休止的任务。(每个内置库都可以以这种方式加载,但这与命令行使用还是有所不同的)。 - Charles Duffy

2

有一个Kernel#set_trace_func可以满足你的大部分要求:

proc最多可以接受六个参数:事件名称,文件名,行号,对象ID,绑定和类名。当发生事件时,将调用proc。

不过我不确定你所说的“错误信息”是什么意思。如果你指的是异常,如果你没有在代码中处理它们,你的代码将以打印出的异常终止。


0

使用调试器?Ruby自带一个,或者使用ruby-debug


像ruby-debug这样的调试器是否能满足我的需求?请阅读我更新后的帖子。 - never_had_a_name

0

你可以抛出异常,捕获它,然后使用异常对象的backtrace方法。


我不是编写该库的人。请阅读我的更新帖子。 - never_had_a_name

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接