前の関連記事:linuxBean14.04(7)GeanyでLibreOfficeのPythonマクロ編集
GeanyでもちょっとPythonマクロのデバッグをしたいときがあるかもしれませんので、デバッグ環境を作っておきます。デバッグにはpudbを使います。
Synapticパッケージマネージャでpudbをインストール
pudb 2015.2 : Python Package Indexでpipを使ったインストール方法が書いてあるのでpython-pipをインストールしてsudo pip install pudbとしてみるとインストールされたかにみえましたがpudbを起動できませんでした。
やむを得ずSynapticパッケージマネージャでpudbを検索してみるとpython3-pudbというパッケージが見つかりました。
現在のpudbは2015.2が最新版ですが、Ubuntu14.04では2013.5版が最新版のようですのでこれをインストール指定にしました。
付属して2つのパッケージがインストールされます。
Terminalでpython3を起動して、import pudb; pu.dbとするとpudbが起動することが確認できます。
pq@pq-VirtualBox:~$ python3
Python 3.4.0 (default, Apr 11 2014, 13:05:18)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pudb; pu.db
Python 3.4.0 (default, Apr 11 2014, 13:05:18)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pudb; pu.db
CUIツールですのですべてキーボードから操作します。
初回起動時は設定画面が開きます。
上下矢印キーで設定項目を移動しスペースキーで設定を変更します。
とりあえずShow line Numbersのみxをつけて有効にしておきました。
この設定画面はCtrl+pであとからでも呼び出せます。
設定が終わったら右矢印で<OK>に移動してEnterキーを押すと設定画面が閉じます。
qでpudbが終了します。
pudbは/usr/lib/python3/dist-packages以下にインストールされていました。
LibreOfficeのPythonマクロをGeanyからpudbでデバッグできるように設定する
linuxBean14.04(7)GeanyでLibreOfficeのPythonマクロ編集で作ったfor_geany.shをコピーしてfor_geany_pudb.shを作ります。
#!/bin/sh PYTHONPATH=$1:/usr/lib/python3/dist-packages export PYTHONPATH /opt/libreoffice4.3/program/python -m pudb.run $2for_geany_pudb.shはこのようにします。
PYTHONPATHにpudbへのパス/usr/lib/python3/dist-packagesを追加しています。
4行目で引数のPythonマクロをpudbで開いています。
今度はこのfor_geany_pudb.shを起動するメニューを作ります。
Geanyのメニューでビルド→ビルドコマンドを設定。
「コマンドを実行」の空きボタンをクリック。
メニュー項目の名前は「pudbでデバッグ」にしました。
%p/for_geany_pudb.sh "%p" "%d/%f"
コマンド欄にはfor_geany_pudb.shを呼びだすこのコマンドを入れました。
(2015.5.30追記。pyファイル以外のファイルも同じコマンドに変わってしまうためPythonコマンドにコマンドを入力することにしました。linuxBean14.04(26)Geanyのビルドコマンドの設定参照。)
test.pyをGeanyで開いた状態で、ビルド→pudbでデバッグ。
test.pyがちゃんとpudbに読み込まれています。
pudbをちょっと使ってみる
nキーで次の行が実行されていきます。
呼び出している関数の中に飛びたいときはsキーを使います。
print()の出力結果はpudbを実行している状態でみる方法はわかりませんでした。
下の「Command line」の枠に出力されるかと期待していましたが当てがはずれました。
例外がでたときはeでException Viewerが起動してその内容が表示されました。
Examineを選択するとPOST-MORTEM MODEになりました。
異常終了したあとでも操作できるモードのようです。
Quitするとpudbが閉じたあとのTerminalにprint()の結果が出力されていました。
参考にしたサイト
pudb 2015.2 : Python Package Index
ビジュアルなCUIのPythonデバッガpudb。
Python パッケージ管理技術まとめ (pip, setuptools, easy_install, etc)
Pythonのパッケージ管理ツールについて詳しくまとめてくれています。
0 件のコメント:
コメントを投稿