私はカスタムデコレータでいくつかの主要な機能を装飾するモジュールを持っています。デコレータコードをスキップして装飾された関数にステップインする方法はありますか?
これらの関数をpdbでデバッグすることは、装飾機能に入るたびにまずデコレータコード自体をステップ実行する必要があるため、しばしば苦痛です。
もちろん私が関心のある機能の中でブレークするようにデバッガを設定することもできますが、キー機能として多くの場所から何度も呼び出されるので、通常は機能の外でデバッグを開始することを好みます。
私はコードでそれを説明しようとしましたが、それは場合に役立ちます私は知らない。
def i_dont_care_about_this(fn):
@functiontools.wraps(fn)
def wrapper(*args, **kwargs):
return fn(*args, **kwargs)
return wrapper
@i_dont_care_about_this
def i_only_care_about_this():
# no use to set pdb here
def i_am_here():
import pdb; pdb.set_trace()
i_only_care_about_this()
だから、私はi_dont_care_about_this
を経由せずi_am_here
からi_only_care_about_this
にステップするための方法がありますか?
基本的に私は与えられた装飾された関数に(の)TEPにのを使用した場合、すべてのデコレータコードをスキップしたいです。
とで元の関数がentereであることを示すd?このようなことを可能にするためには、デコレータとPDBの両方を適応させる必要があります。 –
私は、内部的にPythonがデコレータをどのように扱うかについて私が知っている方法があると考えました。 –