Raspberry Pi 3 & Python 開発ブログ☆彡

Raspberry Pi 3の使い方、設定をわかりやすく解説。Raspberry Pi3 Model B(Element14版)、Raspbian 8.0(NOOBS Ver1.9.2)を使用して開発中。

【スポンサーリンク】

Python開発環境:Eclipseを使用する方法(pydevd:リモートデバック編)

【スポンサーリンク】

前回、前々回に引き続きRaspberry PiPython開発環境でEclipseを使用する方法を紹介します。今回はpydevdを使用したWIndowsからのリモートデバックの仕方について記載します。

pydevdのインストール

Eclipseでリモートデバックするためには、Pythonでpydevdというモジュールをimportする必要があります。pydevd.pyファイルをRaspberry Piにコピーして、PythonPathを設定することでPythonでpydevdモジュールをimportすることができるようになります。

pydevd.pyファイルをRaspberry Piにコピー

pydevd.pyファイルはpysrcフォルダの下にあります(Eclipse+pydevがインストール済み環境)。pysrcフォルダの場所は、環境により異なる場合がありますので、検索ワード:"pysrc"でドライブ全体を検索してください。私の場合は以下のパスにありました。

C:\Users\[UserName]\.p2\pool\plugins\org.python.pydev_5.1.2.201606231256\pysrc

その後、このpysrcフォルダごと、Raspberry Piにコピーします。/home/pi/workspaceフォルダにpysrcフォルダをコピーしました。

※注意:pysrcフォルダの中にあるpydevd.pyファイルだけコピーしないでください。pysrcフォルダをまるごとコピーしてください。

PythonPathの設定

~/.bashrcに下記のように記載することでPythonPathを設定することができます。

export PYTHONPATH="pysrcフォルダパス:$PYTHONPATH"

まず、下記のコマンドで~/.bashrcを開きます。

sudo nano ~/.bashrc

ファイルの最後に下記の様に記載します(pysrcフォルダパスは自身の環境に合わせてください。)

export PYTHONPATH="/home/pi/workspace/pysrc:$PYTHONPATH"

これでpydevdモジュールのインストールは完了です。

サンプルコードの作成

前回のブログで設定した、Remote System ExplorerパースペクティブRaspberry Piの/home/pi/workspace/test.pyファイルに下記のサンプルコードを書きます。

import pydevd

for var in range(0, 10):
    print str(var)
    pydevd.settrace("xxx.xxx.xxx.xxx",stdoutToServer=True,stderrToServer=True)

・リモートデバックに必要なモジュール: pydevdをimportします
・ブレークしたい(トレースしたい)場所に、pydevd.settrace()メゾットを記載します。

settraceメゾットの第一引数にはEclipseが起動しているPCのIPアドレスを記載します。Raspberry PiのIPアドレスではないので注意してください。

Eclipseでデバックサーバーパースペクティブの追加

Eclipseの「メニューバー」 ⇒ 「Window」 ⇒「Perspective」⇒ 「Open Perspective」 ⇒「Other...」をクリックします。 開いたウインドウから"Debug"を選択し、OKボタンをクリックします。これで、Debugパースペクティブが追加されました。

Eclipseでリモートデバックを実行

Debugパースペクティブで下記スクリーンショットのボタンを押して、デバックサーバーを起動します。

f:id:raspberrypi:20161120101757j:plain

Raspberry Piのターミナルからtest.pyを実行します。下記のように変数の中身を確認したり、ステップ実行することができます。

※リモートデバックでは、デフォルトでポート:5678を使用します。ファイアウォールを無効にするか、ポート:5678を開けておかないと正常に動作しませんので注意してください。

f:id:raspberrypi:20161120101821j:plain

 

Raspberry Piのターミナルでwarning: Debugger speedups using cython not foundというワーニングが出た場合は、ターミナルで下記のコマンドを実行してください。cythonがセットアップされ、リモートデバックが高速化されます。ワーニングですので、解決しなくても動作はします。

sudo /usr/bin/python /home/pi/workspace/pysrc/setup_cython.py build_ext --inplace

 

長くなりましたが、これでリモートデバックができるようになりました。さすが、Eclipseですね、強力な開発ツールです。おすすめです。