很奇怪,ruby-debug 或是 ruby-debug19 常常有版本問題,甚至還有 fork 版本 debugger。都不知道哪個沒問題。
最近發現其實 pry gem 就可以作為 debugger 之用,本來還以為只是漂亮的 irb 取代品,沒想到功能這麼強大。作為 debugger 使用的方法很簡單,只要在程式裡加上:
binding.pry
這樣就會設下中斷點。例如在 rails console 或 rails server 中,就會停下來讓你可以進行檢查和除錯。
可是如果你有用 Rails 伺服器,例如 pow 或 passenger 的話,因為不在同一個 process,所以必須加裝 pry-remote gem。它利用 DRb 技巧讓另一個 process 可以亂入進行除錯,用法改成:
binging.remote_pry
接著在 command line 輸入 pry-remote 就可以進行除錯了。非常簡單好用。
其他 pry plugins 也可以裝一下,包括:1. pry-stack_explorer 輸入 show-stack 的話可以看到 call stack 2. pry-debugger 可以加上 step, next, finish 和 continue 的控制