2

Pythonでデバッグするための関数呼び出しを記録する最も簡単な方法は何ですか?私は通常、特定の関数または特定のクラスのすべての関数に興味があります。または、特定のオブジェクト属性で呼び出されるすべての関数でさえある場合があります。呼び出し引数を確認することも役立ちます。

そのすべてのデコレータを作成することは想像できますが、それでもさまざまな場所でソースコードを変更する必要があります。そして、すべてのメソッドを変更するクラスデコレータを作成するのはそれほど簡単ではありません。

ソースコードを変更する必要がない解決策はありますか?理想的には、Pythonの速度をあまり低下させないものです。

4

2 に答える 2

1

デコレータを除いて、Python> = 3.0の場合、クラスに新しい__getattribute__メソッドを使用できます。このメソッドは、オブジェクトのメソッドを呼び出すたびに呼び出されます。Lutzの「LearningPython」の第31章、第37章をご覧ください。

于 2012-11-27T17:44:08.547 に答える
1

sys.setprofile()どちらかまたはおそらくを使用して、必要なことを実行する何かを実装できる必要がありますsys.settrace()。これらは両方とも、関数呼び出しなどの特定の「イベント」が発生したときに呼び出される関数を定義し、呼び出される関数/メソッドを判別してその引数を調べるために使用できる追加情報を渡すことができます。

周りを見渡せば、おそらく出発点として使用するサンプルの使用法コードがあります。

于 2012-11-27T18:54:38.140 に答える