GIMPプラグインをデバッグするにはどうすればいいですか? 出力はどこにありますか? 質問する

GIMPプラグインをデバッグするにはどうすればいいですか? 出力はどこにありますか? 質問する

Windows 上の GIMP 用の Python プラグインを作成しています。このページシェルから実行するか、~/.xsession-errors を確認することを提案します。どちらも機能しません。次のように cmd シェルから実行できます。

gimp-2.8.exe -c --verbose

からこここれにより、出力がpdb.gimp_message(...)ターミナルに送られますが、すべてが期待どおりに実行されている場合にのみ機能します。クラッシュ時には出力が得られません。print ステートメントを試しましたが、どこにも出力されません。これ同様の問題です。

Python-Fu コンソールから実行しても何も起こりません。エラーが発生し、GTK が動作しないため、コメントアウトする必要がありますimport gimpfu。プラグインが登録されてメニューに表示されても、エラーが発生した場合、ヒントをどこで探せばよいかわかりません。

  1. GIMP を再起動せずにプラグインを更新できますか?
  2. プラグインをインポートするのではなく、Python-Fu シェルから実行して解析を確認することはできますか?
  3. エラーログはありますか?
  4. Windows 上でシェルから GIMP を実行して出力を確認するにはどうすればよいでしょうか? Cygwin または VirtualBox のどちらの方がよいでしょうか?
  5. GIMP で実行される Python プロセスに Winpdb を接続するにはどうすればいいですか?

ベストアンサー1

1- GIMP を再起動せずにプラグインを更新できますか? (少なくともスローモーフは速くなります)

スクリプトを追加したり、register() を変更したりした場合は、GIMP を再起動する必要があります。スクリプトの他の部分を変更する場合は再起動する必要はありません。スクリプトは別のプロセスとして実行され、毎回ディスクから再読み取りされます。

役に立つ情報源:http://gimpbook.com/scripting/notes.html

2- python-fu シェルからプラグインを実行できますか。(解析を確実に行うためにインポートするのではなく)

python-fuはい、コンソールで登録したプラグインに次のようにアクセスできます。

>>> pdb.name_of_registerd_plug-in

次のように呼び出すこともできます:

>>> pdb.name_of_registerd_plug-in(img, arg1, arg2, ...)

また、python-fuダイアログ コンソールで、Browse ..オプションをクリックして登録済みのプラグインを見つけ、 をクリックしてコンソールApplyにインポートすることもできます。python-fu

役に立つ情報源:http://registry.gimp.org/node/28434

3- 見逃しているエラー ログなどはありますか?

ログを記録するには、次のような関数を定義します。

def gimp_log(text):
    pdb.gimp_message(text)

いつでも好きなときにコード内で使用できます。

そのログを表示するには、プログラムでメニューからgimp開きます。そうしないと、ログを作成するたびにメッセージ ボックスがポップアップ表示されます。Error ConsoleDockable DialogsWindows

また、ファイルにリダイレクトするstdinこともできます。stdout

import sys
sys.stderr = open('er.txt', 'a')
sys.stdout = open('log.txt', 'a')

これを実行すると、すべてがexceptionsに移動しerr.txt、すべてが印刷されます。ログ ファイルを保持する代わりに、オプションlog.txtを使用してファイルを開くことに注意してください。aw

役立つ情報源:

Gimp Python スクリプトでコンソールに情報を出力するにはどうすればよいですか?

http://www.exp-media.com/content/extending-gimp-python-python-fu-plugins-part-2

4- シェルから Windows 上で gimp を実行して出力を確認する方法はありますか? (cygwin (または virtualbox..) の方が良いでしょうか)?

それについてはエラーが発生しましたが、もう一度試してください...

5- 既存のプロセスに winpdb を接続する方法をまだ調べていません。gimp 内で実行される python プロセスに接続するにはどうすればよいでしょうか?

最初のインストールウィンpdb、またwxPython(Winpdb GUI は wxPython に依存します)

独自の Python インタープリターがあるためGimpwinpdbデフォルトの Python インタープリターまたは Gimp Python インタープリターにインストールする必要がある場合があります。

デフォルトの Python インタープリターにインストールする場合は、インストールされたファイルをGimp Python インタープリターのパスにwinpdbコピーする必要があります。rpdb2.py..\Lib\site-packages

その後、gimp のコンソールpdb2からモジュールをインポートできるようになります。Python-Fu

GIMP 2.8.10 Python Console
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)]
>>> import rpdb2
>>>

次に、プラグイン コード、たとえばメイン関数に次のコードを追加します。

import rpdb2 # may be included out side of function.
rpdb2.start_embedded_debugger("pass") # a password that will asked by winpdb

次に、gimp に移動して Python プラグインを実行します。プラグインを実行すると、プラグインが実行され、上記のコードに到達するまで待機します。

開くには、Winpdb GUIに移動し..\PythonXX\Scriptsて実行しますwinpdb_.pyw

(リモートデバッグにWinpdbを使用する場合は、ファイアウォール途中で TCP ポート 51000 が開きます。ポート 51000 が使用されている場合、Winpdb は 51000 と 51023 の間で代替ポートを検索することに注意してください。

次に、メニューWinpdb GUIから選択してパスワードを入力すると、そのリストにプラグイン スクリプトが表示されるので、それを選択して、段階的にデバッグを開始します。Fileattachpass

Winpdb で Python Gimp プラグインをデバッグする

役立つリソース:Windows に PyGIMP をインストールする

役に立つ情報源:

http://wiki.gimp.org/index.php/Hacking:プラグイン

python のドキュメント

http://wiki.elvanor.net/index.php/GIMP_Scripting

http://www.exp-media.com/gimp-python-tutorial

pythonfu は、Python の基本的な概念です。

http://www.ibm.com/developerworks/opensource/library/os-autogimp/os-autogimp-pdf.pdf

おすすめ記事