Denken Sie über dieses Szenario nach:
Ich debugge mein Django-Projekt und gehe durch den Code (hinein und heraus). Der Debugger gibt manchmal Django-Bibliotheken oder andere externe Bibliotheken ein.
Kann jemand verhindern, dass der Debugger externen Code eingibt? Oder zumindest ein 'großer' Schritt, um den Debugger zurück zum Projektcode zu bringen?
Kann jemand verhindern, dass der Debugger externen Code eingibt?
Ja, Dmitry Trofimov weiß ;
(...) fügen Sie Module hinzu, die nicht auf das dict
DONT_TRACE
in<pycharm-distr>/helpers/pydev/pydevd.py
zurückgeführt werden sollen Das ist eine hacky Lösung (...)
Wenn Sie möchten, dass diese Funktion weniger hacky ist, können Sie darüber abstimmen, indem Sie das Problem kennen PY-9101 Implementieren " Wechseln Sie nicht in die Option "classes for Python"
Wer pdb benutzt, könnte wissen, dass es in pdb eine solche Funktion gibt;
Ab Python 3.1 hat Pdb
class ein neues Argument namens skip
-
class pdb.Pdb(completekey='tab', stdin=None, stdout=None, skip=None, nosigint=False)
Wenn das Argument skip angegeben ist, muss es sich um ein iterbares glob-style-Modul handeln Namensmuster. Der Debugger tritt nicht in Frames ein, die ursprünglich erstellt wurden in einem Modul, das einem dieser Muster entspricht. 1
1 Ob ein Frame von einem bestimmten Modul stammt, ist bestimmt durch
__name__
in den Frame-Globals.
Das Beispiel in der Dokumentation zeigt, wie man Djangos Pakete ausblendet -
import pdb; pdb.Pdb(skip=['django.*']).set_trace()
Alles sieht für den Debugger gleich aus, es kann nicht zwischen Ihrem Code oder Djangos Code unterscheiden - es ist alles Python. Es wird also alles laufen, aber wenn Sie verhindern wollen, dass es so tief durchdringt, müssen Sie Codezeilen überspringen, anstatt sie zu betreten.
Gemäß den PyCharm-Dokumenten möchten Sie F8
verwenden, wenn Immer sehen Sie eine Codezeile, die aussieht, als könnte sie ein Gateway zu Djangos Interna sein. Wenn du dich versehentlich in Djangos Quellcode befindest, kannst du Shift+F8
drücken, bis du nicht mehr da bist.