2012-10-24 7 views
6

Pythonのソースコードを調査し、トレースして、事態がどのように機能しているかを確認し、明示的に文書化されていない機能に関する疑問を解決したい参考資料に記載されています。ソースコードを使ってPythonの機能と動作をトレースしようとしています

かなり圧倒されているので、これについてどうやってやっていくかについての始まりの情報があります。私はCを読むことができるので、私はそれを続けています。それに加えて、少なくともわずかな指導がなければ、少し威圧的なように見えます。

例えば、属性参照がPythonでどのように実装されているかを文書化したいとしましょう。 Pythonプログラムに属性参照式が存在するときに何が起こるかをどのようにトレースするのですか?

「属性参照」のようないくつかの「walk = thru」の例とともに、ソースコードがどのように編成され、どの部分が役立つかを概観したものでしょう。

私はこれについての情報を検索しましたが、それほど多くはないようです。

答えて

1

おそらくよいPythonデバッガが役に立ちますか?私はPyDev plugin for Eclipseを使ってみようと思います。それは、少なくともクラスの属性を参照するときに特別なPythonメソッド(__getattr__()または__setattr__()など)が呼び出されるのを助けるでしょう。もっと深く進む必要がある場合はPython C API、さらにはPython C Source Codeをご覧ください。

+0

OPは、Python、Cソースへのイントロについて尋ねている参照してください! – XORcist

+0

ありがとう、私はこれにデバッガを使用することを考えていませんでした。この可能性を見ていきます(私はEclipseを使用していませんが)。C APIとソースコードについては、間違いなく理想的です。それを始めようとするのは、最も苦労しない方法を探しているだけです(そのようなものはありますか?) –

+2

[GDB with Python](http://wiki.python.org/moin)を使ってCソースレベルでデバッグできるようです。/DebuggingWithGdb) – Josh

1

python標準ライブラリにはトレースモジュールがあります。これは、いくつかのモードがあり、それは次のように実行されるようPythonコードのすべての行を印刷するために使用することができます。

python -m trace -t myscript.py 

http://docs.python.org/library/trace.html

+0

これは素晴らしいです、ありがとう。私はすぐにこれを見て、私がそれで集めることができる情報を見ていきます。私の強迫的な強迫観念は、やはり結局コードを掘り起こす方法を知りたいと思っています。実用的な努力ではないかと確信していますが、私はそれが楽しみのためだけであることがわかります。 –

+0

これを試してみてください。それは確かに便利ですが、私はそれが必要なレベルの詳細を持っているかどうかはわかりません。たとえば、私はPythonの特別なメソッド呼び出し(オブジェクトのインスタンス化など)を取得していません。おそらく、私はすぐには見えませんでしたが、このためにトレースに設定できるオプションがあります。私は見てみましょう。 –

関連する問題