0

如果我在 Ruby 或 Ruby on Rails 中收到一条大错误消息并且我不理解它,我该如何在将错误消息发布到堆栈溢出之前对其进行解密。是否有任何工具提示或技术可以帮助我深入了解错误消息并找到实际存在问题的代码?

4

2 回答 2

3

如果仔细观察,Ruby 和 Ruby on Rails 中的错误消息实际上非常清楚。“堆栈跟踪”实际上非常有用。它向您展示了解决问题最需要的三件事:

  1. 所有涉及的文件的路径
  2. 这些文件的行号
  3. 发生错误的块的名称。示例:

    C:\Users\krishnac\Documents\NetBeansProjects\githupbdcm\trunk>bundle exec rake 
    rake aborted!
    incompatible library version - C:/Ruby200/lib/ruby/gems/2.0.0/gems/bcrypt-ruby-3.1.1.rc1-x86-mingw32/lib/bcrypt_ext.so
    C:/Users/krishnac/Documents/NetBeansProjects/githupbdcm/trunk/config/application.rb:13:in <top (required)>'
    C:/Users/krishnac/Documents/NetBeansProjects/githupbdcm/trunk/Rakefile:5:in require'
    C:/Users/krishnac/Documents/NetBeansProjects/githupbdcm/trunk/Rakefile:5:in `<top (required)>'
    `(See full trace by running task with --trace)`
    

所以现在我们有了消息

  1. 我们可以通过阅读来判断错误可以追溯到文件

    C:/Users/krishnac/Documents/NetBeansProjects/githupbdcm/trunk/Rakefile:5
    

    这并不一定意味着此文件中发生了错误,但导致错误的方法之一是在此文件中

  2. :5表示第五行是错误发生的地方。

  3. 下一部分告诉我们错误发生在块中require

    Rakefile:5:in 'require'
    

所以你看,阅读错误信息并没有那么糟糕。我们所要做的就是浏览直到找到我们知道的相关文件,然后找到我们想要的行号,然后我们修复代码。

于 2013-07-19T15:04:05.010 回答
0

一般来说,Ruby on Rails 会为您提供错误的位置和描述。这样,您无需将错误发布到 SO。

根据经验,最好先查看脚本中出现的第一条错误消息并先修复它。通常,一个错误会导致程序中出现更多错误,而修复它们将解决其他错误。

最后,一个有用的工具是使用调试器。此 gem 允许您在出现可疑错误时停止代码并逐行读取代码。该文档可以在 GitHub 上找到:https ://github.com/cldwalker/debugger

于 2013-07-19T19:12:19.920 回答