Pythonのトレース情報を表示する disptrace ってのを作ってみた
Pythonには実行したスクリプトの行番号なんかを表示するtraceモジュールというのがあって、デバッグの時などうまく使うとデバッガでブレークポイント仕掛けるより効率的にデバッグできるときもあったりするんだけど、いまいち低機能で使いにくく、あんまり使っている人は見かけない気がしている。
で、ふと思いついて作ってみたのがこちら
http://pypi.python.org/pypi/disptrace
なにをするかというと、収集したトレース情報をHTMLで出力し、ちょっとしたJavaScriptを仕込んで呼び出しのネストを折りたたんだりできるようにしてみた。こんな感じのHTMLが出力される。
http://www.pythonpath.jp/download/disptrace-sample.html
標準のtrace.Trace()
と同じように関数を呼び出し、終わったらDispTrace.render()
メソッドでHTMLが生成される。
import disptrace t = disptrace.DispTrace() t.runfunc(myfunc) with open("trace.html", "w") as f: f.write(t.render())
ホームディレクトリに .disptrace というファイルを作っておくと、トレースしないモジュールやディレクトリを指定できる。
[disptrace] ignorepath=/usr/local/lib/python2.6/dist-packages/:/usr/lib/python2.6/plat-linux2 ignoremodule=sys, os
ignorepathで指定したディレクトリにあるモジュールは、ログ情報を収集しない。複数のディレクトリを指定する場合は、パス区切り(Unixでは':', Windowsでは';') で区切る。また、ignoremodule にはログを取得しないモジュールの名前を指定する。複数のモジュールを指定する場合は ',' で区切る。