6

Nautilus スクリプトを (たとえば Python を使用して)作成する場合、現在、基本的なデバッグ用の 2 つの方法を認識しています。

  1. (Zenity などの) ポップアップ ウィンドウを "print" ステートメントとして使用する。
  2. 後で参照できるように、stderr と stdout をテキスト ファイルにキャプチャします。

これらの方法はかなりうまく機能しますが、私が気付いていないより効果的な方法があるのではないかと思います。誰でも他の方法を提案できますか?

編集:

コンテキスト: Nautilus の Ubuntu の右クリック メニューから起動された Python スクリプトをデバッグする方法を探しました。

--no-desktop オプションを指定して nautilus を再起動するという cedric の回答を使用すると、端末ウィンドウに stderr と stdout が表示されるようになります。ただし、この端末はデバッグ用の pdb コンソールとして使用できるようには見えません (出力専用のようです)。

右クリック メニューから起動したときにスクリプト プロセスへの入出力アクセスを取得する方法を検索したところ、以下の回答に記載されている情報が見つかりました。

(また、単体テストとログ記録がベスト プラクティスであることに同意しますが、特に小さなスクリプトでは、対話型デバッグの場所がまだあると主張します。)

4

5 に答える 5

6

あなたが求めたのは、 --no-desktop オプションを指定して nautilus を再起動することで実行できる、スクリプトの出力を確認することだけです。

$ nautilus -q
$ nautilus --no-desktop

このようにして、スクリプトまたは Python インタープリターによって作成された出力 (stderr / stdout) が表示されます。役に立つはず...

于 2011-01-03T12:52:22.397 に答える
3
  1. デバッガー (pdb または Winpdb)

  2. Python のログ モジュールを使用する

  3. デバッグ デコレータを使用します - http://paulbutler.org/archives/python-debugging-with-decorators/を参照してください

  4. How would you write a @debuggable decorator in python? のその他の役立つヒント

于 2010-12-17T23:03:52.167 に答える
3

出力を確認し、ターミナルでスクリプトとやり取りするためのトリックとして、スクリプトを 2 つのファイルに分割しました (開いたままの gnome-terminal ウィンドウ内で Python で書かれた nautilus スクリプトを実行する方法を参照してください)。

  • ~/.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.pyこれには実際の Python スクリプトが含まれており、nautilus スクリプトメニューには表示されません。

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

もちろん、これは基本的なデバッグ用ですが、誰かにとって役立つかもしれません。

于 2017-08-22T11:08:16.103 に答える
2

Nautilus の右クリック メニューのスクリプト サブメニューから起動された Python スクリプトの対話型デバッグを取得する方法を検索した後、次の解決策を見つけました。

WingIDE を使用して、外部プロセスをリッスンして接続することができます。これにより、私の Python Nautilus スクリプトなど、外部から起動されたコードに対して WingIDE デバッグ機能を使用できるようになります。

WingIDE 設定の [パッシブ リッスンを有効にする] を有効にしてから、wingdbstub.py をスクリプト ディレクトリにコピーする必要がありました。次に、スクリプトに「import wingdbstub」を追加し、Wing で開いたスクリプト コードにブレークポイントを設定しました。

Nautilus の右クリック メニューからスクリプトを実行すると、プロセスが WingIDE に接続され、WingIDE のすべてのデバッグ機能を使用できました。

詳細はこちら: 5.12 外部から開始されたプロセスのデバッグ

于 2011-01-09T03:54:49.697 に答える
1

PyUnit を使用してスクリプトの単体テストを行います。

これは、'print' ステートメントよりも効果的であり、リグレッションを防ぐために繰り返し使用できます。また、一時的なデバッグ コードがスクリプトに残るリスクも軽減されます。

于 2010-12-17T20:31:33.250 に答える