2015-05-09 51 views
0

我有一個ruby腳本,顯然是正確的,有時停止工作(可能在通過pg gem對Postgresql的某些調用中)。問題在於它凍結但不會產生任何錯誤,所以我看不到行號,我總是必須使用puts "ok1",puts "ok2"等來隔離行,並查看腳本停止的位置。查看當前正在執行的ruby腳本

有沒有更好的方法來看到正在執行的當前行(不更改腳本)?也許目前的堆棧?

回答

1

你可以調查ruby-debug一個項目,已經幾次改寫幾個不同版本的ruby,應該允許你逐行瀏覽你的代碼。不過,我個人更喜歡printf調試。另外,如果我必須對您的問題進行絕對隨機猜測,那麼我可能會調查您是否遇到了數據庫中的競爭條件和/或死鎖。

+0

我已經考慮過'ruby-debug',但不幸的是,在腳本運行時無法看到正在執行的當前行。唯一的辦法是在某處設置一個斷點,但這不是我想要的。我只是想運行腳本,並在某個時間打印正在執行的當前行,不管它是什麼。 – collimarco

+1

我即將提出的是可怕的,但絕望的時代和所有這些...以下是一些組合:http://stackoverflow.com/a/3236342/3277393和http://stackoverflow.com/ a/12175847/3277393。你可以在每個方法調用中創建一個鉤子(因爲ruby中的幾乎所有東西都是方法調用)並在開始執行時打印行號。由於這就像從消防水帶喝水一樣,您也可以考慮過濾輸出以僅顯示您感興趣的源文件中的行號。 – user12341234