次のシナリオについて考えてみてください。
Django プロジェクトをデバッグし、コードをステップ実行します (インとアウト)。デバッガーは、Django ライブラリーまたはその他の外部ライブラリーに入ることがあります。
デバッガーが外部コードに入るのを防ぐ方法を知っている人はいますか? または、デバッガーをプロジェクト コードに戻すための少なくとも「大きな」ステップ アウトですか?
デバッガーが外部コードに入るのを防ぐ方法を知っている人はいますか?
はい、ドミトリー・トロフィモフは知っています。
(...) トレースしたくないモジュールを dict
DONT_TRACE
に追加します。<pycharm-distr>/helpers/pydev/pydevd.py
これはハックなソリューションです (...)
この機能のハッキングを減らしたい場合は、Issue
PY-9101 にアクセスして投票できます。 Python デバッガーの「クラスにステップ インしない」オプションを実装します。
pdb を使用している人は、pdb にそのような機能があることを知りたいと思うかもしれません。
Python 3.1 から、クラスには-Pdb
という新しい引数があります。skip
class pdb.Pdb(completekey='tab', stdin=None, stdout=None, skip=None, nosigint=False)
skip 引数を指定する場合、glob スタイルのモジュール名パターンの iterable でなければなりません。デバッガーは、これらのパターンのいずれかに一致するモジュールで発生したフレームにステップ インしません。1
1フレームが特定のモジュールで発生したと見なされるかどうかは
__name__
、フレーム内グローバルによって決定されます。
ドキュメントに記載されている例は、Djangoのパッケージをスキップする方法を示しています-
import pdb; pdb.Pdb(skip=['django.*']).set_trace()
デバッガーにはすべてが同じように見えます。デバッガーは、あなたのコードと Django のコードを区別できません。すべて Python です。したがって、すべてを実行しますが、非常に深くドリルダウンするのを止めたい場合は、コード行に「ステップ イン」するのではなく、「ステップ オーバー」を開始する必要があります。
PyCharm docsによると、F8
Django の内部へのゲートウェイのように見えるコード行が表示されるたびに使用する必要があります。誤って Django のソース コード内にいることに気付いShift+F8
た場合は、そこから抜け出すまでヒットすることができます。