2010-12-17 48 views
5
Ubuntu的鸚鵡螺腳本

當編寫一個Nautilus Script(如使用Python),我目前知道的兩種方法基本調試:方法調試用Python編寫的

  1. 使用(如Zenity)彈出窗口的「打印「語句。
  2. 捕獲文本文件中的stderr和stdout以供日後參考。

這些方法工作得相當好,但我懷疑有更多有效的方法,我不知道。任何人都可以提出其他方法

編輯:

語境:我所追求的方法來調試從鸚鵡螺Ubuntu的右鍵菜單推出了python腳本。

使用cedric的用no - desktop選項重新啓動nautilus的答案意味着stderr和stdout在終端窗口中變爲可見。但是,這個終端似乎不能用作調試的pdb控制檯(它似乎只是輸出)。

在我從右鍵菜單啓動時,我在尋找一種獲得輸入和輸出訪問腳本過程的方式,我在下面的答案中找到了信息。

(另外,雖然我同意單元測試和記錄是最好的做法,我認爲目前仍然沒有交互式調試的地方,尤其是小的腳本。)

+0

如果你不能使用標準的Python調試器pdb,你可以使用[IPython](http://ipython.scipy.org)。 – martineau 2010-12-17 20:33:45

回答

1

的PyUnit單元測試腳本。

這將比「打印」語句更有效,並且可以重複使用,以幫助您防止迴歸。它還會降低臨時調試代碼留在腳本中的風險。

5

Wh

$ nautilus -q 
$ nautilus --no-desktop 

這樣,您將看到您的腳本進行的任何輸出(錯誤/標準輸出):在你要的只是看你的腳本輸出,可以通過重新啓動鸚鵡螺與--no桌面選項來完成或由Python解釋器。應該是有用的...

+1

感謝鸚鵡螺 - 無桌面,非常有用! – khirod 2014-06-08 14:37:52

1

在找到一個方法來獲取從Nautilus右鍵菜單的腳本子菜單啓動的python腳本的交互式調試後,我找到了以下解決方案。

可以使用WingIDE來監聽並連接到外部進程。這使得可以對外部啓動的代碼使用WingIDE調試功能,例如我的Python Nautilus腳本。

我只需要打開WingIDE首選項「啓用被動偵聽」,然後將wingdbstub.py複製到腳本目錄中。然後,我在腳本中添加了「import wingdbstub」,並在腳本代碼中設置了一個斷點,並在Wing中打開。

當我從Nautilus的右鍵菜單運行腳本時,進程已連接到WingIDE,並且我能夠使用所有的WingIDE調試功能。

詳情在這裏:5.12 Debugging Externally Initiated Processes

0

至於一招,看到的輸出,並與在終端的腳本進行交互,我在兩個文件分割我的腳本(見問題How to execute a nautilus script written in Python inside a gnome-terminal window that stays open?):

  • 這將打開一個終端~/.local/share/nautilus/scripts/firstfile.sh,執行腳本在它,離開它打開:

    #!/bin/bash 
    gnome-terminal -- bash -c "python3 ~/.local/share/nautilus/scripts/.secondfile.py; bash" 
    
  • ~/.local/share/nautilus/scripts/.secondfile.sh其中包含實際的Python腳本,並從鸚鵡螺腳本菜單隱藏:

    #!/usr/bin/python3 
    print("Hello") 
    

當然這僅僅是基本的調試,但它可能是有用的人。