2014-09-05 100 views
3

我試圖幫助調試導致python(2.7)本身崩潰的python腳本。如何調試python腳本崩潰python

  • 腳本將一些信息記錄到一個文件中,並在每次運行時停止在不同的停止位置,或者至少它寫出的內容位於不同的位置。
  • 該腳本已經有try \ catch's了。
  • 該腳本以前的工作沒有錯誤
  • 這是在Window 2008服務器上,有一點點RAM和運行沒有太多的CPU使用率。

所以我的問題:

  • 是否有工具或技術,可以幫助?
    • 我看到有一個我可以導入的pdb模塊,但不知道這是否有助於解決這個問題。
  • 當py腳本崩潰python本身你將如何調試?

GB

+0

硬件問題?由於您使用不安全的多線程代碼而導致一些模糊的競態條件?損壞的Python安裝?外部庫損壞?如果它總是在不同的位置崩潰,它可以是任何... – 2014-09-05 06:49:52

回答

5

因此,有日誌中沒有異常?它只是在不同的地方隨機退出?

要看到每一個聲明,因爲它的執行,使用trace模塊:

python -u -m trace -t program.py 

要在調試器中運行的程序,使用pdb

python -m pdb program.py 

有了這兩個,你應該能夠看看它是否在程序中導致它退出。如果你沒有看到任何證據或模式,那麼它可能是程序之外的東西導致它死亡。

在Linux上,我也會嘗試運行程序strace並觀看OOM殺手。不知道在Windows中有什麼類似的步驟(Windows沒有OOM殺手)。

+1

我建議交換* pdb * [PuDB](https://pypi.python.org/pypi/pudb)。這是純粹的控制檯調試器和更類似於IDE的調試器之間的完美混合體,全部都在控制檯環境中。在Windows *上,對於內存來說,它可能是** Resource Monitor **或更高級的[Process Monitor](http://technet.microsoft.com/zh-cn/sysinternals/bb896645)。 – khampson 2014-09-06 00:26:19