Pythonのデバッグ
普通のPythonでも使える技です。(標準機能です。)
Python でデバッグするときは割とprintで値を表示したりすると思いますが
以下の方法がかなり楽でした。
これを、処理の途中にいれておくとそこで処理が止まり、デバッグができるようになります。そう、よくVisualStudioなどでもできるアレです。
Mayaの場合上のような新しいPython標準入力ウィンドウがでてきてそこにコマンドをいれることで
ステップイン(1行実行して一時停止。関数があった場合はその中に入ってさらに実行。)
ステップオーバー(1行実行して一時停止。そこに関数があった場合中に入らず、その関数を実行して次の行へ)
ステップアウト(今の関数の処理が終わるまで処理をすすめて一時停止)
や
その時の変数の値を表示などをすることもできます。とても便利。
ステップ実行について用語参考:
デバッグコマンド
sまたはstep : ステップイン
nまたはnext : ステップオーバー
rまたはreturn : ステップアウト
aまたはarg : 今の関数の引数一覧を表示
p : いわゆるプリント。引数に変数をいれると値を表示。
l またはlist: 前後のソースコードを表示(ただし、これはスクリプトエディタ上では無効のようです。ちゃんとpyファイルをimportして外部から呼び出している場合には有効でした。)
cまたはcontinue : 次のブレイクポイントまで一気に進めます。
qまたはquit : 処理を中断して終了。
hまたはhelp : コマンドの一覧を表示。引数にコマンド名をいれるとそのコマンドの説明が返る。
実行例:
簡単な例です
selobjs = None
selobjs = (cmds.ls(sl=True))
これを実行すると自動的にselobjs=Noneを実行した次の行で止まります。
ここで、
p selobjsをいれると、Noneが返ってきます。(当然ですね)
次にsを入力しつぎの行へ。
ここで、p selobjsを入力すると、現在の「選択オブジェクトのリスト」がスクリプトエディタのログに表示されます。
さらにp type(sellobjs)で
<type 'list'>
と表示され、これがリストであることがわかります。
最後はcでデバッグを抜け、終了します。
よりこまかな詳細は以下。
26.2. pdb — Python デバッガ — Python 2.7.14 ドキュメント
参考: