linuxBean14.04(101)pycallgraphをEclipseのPyDevプラグインでリモートデバッグ

2016-01-30

旧ブログ

t f B! P L

前の関連記事:linuxBean14.04(100)Anaconda3のpy335にpylintとpycallgraphをインストールし直す


まずEclipseのPyDevでlinuxBean14.04(100)Anaconda3のpy335にpylintとpycallgraphをインストールし直すのpycallgraphをリモートデバッグできるようにします。あとは理解できたところをせっせとコメントをつけていくことにします。

EclipseでAnaconda3のbinフォルダのPyDevプロジェクトを作成する


linuxBean14.04(93)Eclipse4.5にPyDevをインストールと同様にしますがインタープリタはAnaconda3のpy335のものを指定します。

pycallgraphのパッケージがあるフォルダをPyDevプロジェクトにしないといけないと思っていたのですが、そうではなくてTerminalから呼ばれるbinフォルダにあるpycallgraphファイルをPyDevプロジェクトにすればうまくいきました。

PyDevパースペクティブにしてFile→New→PyDev Project。

Project nameはpy335、Grammer Versionは3.0にしました。

インタープリタはAnaconda3のpy335のものにするのでClick here to configure an interpreter not listed.をクリックします。


右上にあるNewボタンをクリックしてインタープリタに~/anaconda3/envs/py335/bin/python3.3を指定しLibrariesはデフォルトで推奨されたものにしました。


~/anaconda3/envs/py335/binにあるpycallgraphファイルを使うので「Create links to existing sources (select them on the next page)を選択します。


Add external source folderボタンをクリックして~/anaconda3/envs/py335/binを選択して「Finish」。


PyDevパッケージエクスプローラでpycallgraphを開いて13行目にリモートデバッグに必要なimport pydevd; pydevd.settrace()を挿入して保存ボタンをクリックしました。

/opt/eclipse/plugins/org.python.pydev_4.4.0.201510052309/pysrcにPYTHONPATHを通しておく必要があります。

11行目にエラーがでていますが動作に支障はありませんでした。

pycallgraphをリモートデバッグする


Debugパースペクティブに切り替えます。

PyDev→Start Debug Server。

Terminalを起動して次のコマンドを実行してpycallgraphを起動します。

source activate py335
pycallgraph graphviz ~/anaconda3/envs/py335/lib/python3.3/site.py


Eclipseをみるとpycallgraphの15行目でブレークされていることがわかります。

Step Intoするとそのメソッドのpyファイルに飛んでくれます。

2016.2.11追記。Step Intoでみていっていろいろ勉強になりましたが、肝心の26行目のwithの中のexec()のところはそのまま終わってしまいました。
with __pycallgraph.PyCallGraph(config=__config):
    exec(__file_content)
終了するとTerminalのほうにこんなメッセージがでてくるのでこれが問題なのかもしれません。
PYDEV DEBUGGER WARNING:
sys.settrace() should not be used when the debugger is being used.
This may cause the debugger to stop working correctly.
If this is needed, please check: 
http://pydev.blogspot.com/2007/06/why-cant-pydev-debugger-work-with.html
to see how to restore the debug tracing back correctly.
Call Location:
  File "/home/pq/anaconda3/envs/py335/lib/python3.3/site-packages/pycallgraph/tracer.py", line 37, in stop
    sys.settrace(None)
sys.settrace()を使うスクリプトのデバッグは難しいようです。)

次の関連記事:linuxBean14.04(102)google-drive-ocamlfuseのインストール

ブログ検索 by Blogger

Translate

最近のコメント

Created by Calendar Gadget

QooQ