前の関連記事: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.をクリックします。
~/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」。
/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()を使うスクリプトのデバッグは難しいようです。)





0 件のコメント:
コメントを投稿