ruby - 如何调试 ruby​​ 代码?

标签 ruby debugging

我运行的是 Ubuntu 10.10。我只想调试一个简单的脚本。在花了半天时间试图弄清楚如何做到这一点后,我放弃了。我到底该怎么办?

我从 Ubuntu 存储库安装了 ruby-dev
我运行了 sudo gem install ruby​​-debugsudo gem install ruby​​-debug-ide

我尝试了几种不同的方法来完成这项工作。我试过 require 'ruby-debug' 然后在代码的某处设置 debugger 。但是 Ruby 找不到 ruby-debug
我尝试设置 vim-ruby-debugger,这将花费 ages 来执行 :Rdebugger myScript.rb 并允许我设置断点,但似乎没有办法使用该调试器执行我的代码。
我尝试使用 NetBeans,但每次我设置项目并单击任何内容时它都会崩溃。

所以,亲爱的社区:必须有一种调试 Ruby 的方法。不是铁轨。没有什么花哨。只是一些 CLI 脚本。请帮助我,否则我会失去仅剩的理智。

编辑: gem exec 目录不在我的路径中。所以,至少 rdebug 现在似乎可以工作了。

最佳答案

Ruby-debug 适用于 1.8+,ruby-debug19 适用于 1.9+。

ruby-debug 易于学习且非常有用。您可以告诉应用程序运行直到特定条件存在,然后让它中断,以便于定位 nil 值或偶尔出现的其他条件。

在命令行中使用 rdebug appname,您将在调试器提示符处结束。如果你想运行到第 100 行然后停止,你可以输入 c 100,调试器会设置一个临时断点,如果程序在执行路径中,它会先运行然后停在那里。一旦停止,临时断点将被清除。如果你总是想在第 100 行停止,你可以执行 b 100 然后 c 调试器将设置一个永久断点,继续,然后在断点时停止到达了。您可以清除断点,设置在某些条件适用时发生的条件断点等。您可以键入 n 跳过子程序调用进入下一条指令,或 s 到走进他们。有以各种方式显示变量内容的命令,因此请通读文档。

从 rdebug 内部,您可以进入一个 IRB shell,其中已经填充了您的变量,这样您就可以戳东西看看会发生什么。您可以从内部检查或设置值,帮助进行假设调整。如果您从 rdebug 中执行此操作,您可以使用更改后的值继续该程序并查看它的行为。

IRB 有它的用处,它非常适合尝试一些事情,但它不能替代调试器,就像调试器可以做一些 IRB 式的事情,但不会取代它一样。这两种工具是一个很好的组合,可以避免依赖打印语句或转储到日志文件。


Pry已成为 IRB 和 debugger 的完美结合, 非常值得研究。

关于ruby - 如何调试 ruby​​ 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4124051/

相关文章:

ios - Xcode调试(断点)问题

ios - SpriteKit-最小化四位数

Ruby - 删除部分文本

ruby - Watir 平等测试

javascript - 在 ruby​​ 中使用 sjcl.js 创建的 AES 解密

ruby-on-rails - Ruby yaml 无法读取 unicode

javascript - XP Home 上适用于 Internet Explorer 的 Microsoft 脚本编辑器?

linux - 汇编 MOV 不起作用,调试 Linux 和 INT 代码列表

javascript - 如何中断 localStorage 更改

mysql - 用于备份表并删除记录的 Ruby/Bash 脚本