10

次のシナリオについて考えてみてください。

Django プロジェクトをデバッグし、コードをステップ実行します (インとアウト)。デバッガーは、Django ライブラリーまたはその他の外部ライブラリーに入ることがあります。

デバッガーが外部コードに入るのを防ぐ方法を知っている人はいますか? または、デバッガーをプロジェクト コードに戻すための少なくとも「大きな」ステップ アウトですか?

4

2 に答える 2

8

デバッガーが外部コードに入るのを防ぐ方法を知っている人はいますか?

はい、ドミトリー・トロフィモフは知っています。

(...) トレースしたくないモジュールを dictDONT_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()

于 2013-03-03T13:36:49.247 に答える
1

デバッガーにはすべてが同じように見えます。デバッガーは、あなたのコードと Django のコードを区別できません。すべて Python です。したがって、すべてを実行しますが、非常に深くドリルダウンするのを止めたい場合は、コード行に「ステップ イン」するのではなく、「ステップ オーバー」を開始する必要があります。

PyCharm docsによると、F8Django の内部へのゲートウェイのように見えるコード行が表示されるたびに使用する必要があります。誤って Django のソース コード内にいることに気付いShift+F8た場合は、そこから抜け出すまでヒットすることができます。

于 2013-03-01T20:13:10.947 に答える