2017-03-04 2 views
0

Ich verwende meine eigenen Dekoratoren an vielen Stellen in meinem Code (z. B. für die Protokollierung usw.). Gibt es eine Möglichkeit, dem Debugger zu sagen, dass er den Körper des Dekorators überspringt und direkt in die dekorierte Funktion eintritt?Tell PyCharm Debugger nicht in Dekoratoren

+0

Legen Bruchstellen in den Dekorateur nicht oder Run verwenden – mbatchkarov

+0

zum Cursor Ich glaube, ich kann es nicht erklären war klar. Angenommen, ich debugge in der Funktion 'A()', die die Funktion 'B()' aufruft, die dekoriert ist. Wenn ich "in die Funktion gehe" auf der Zeile, die 'B()' nennt, komme ich nicht in 'B()', aber ich steige in den Dekorateur (an dem ich definitiv nicht interessiert bin - es macht nur ein paar Logins in meinem Fall). Ich war nur neugierig, wenn ich diesen Schritt irgendwie überspringen und direkt in 'B()' gehen könnte. –

+0

Ich glaube nicht, dass Sie das tatsächlich mit der Step-Into-Methode tun können. Soweit es Python betrifft, hat es keine Ahnung, dass Ihre Funktion dekoriert ist. Die '@ decorator'-Syntax ist buchstäblich die gleiche Sache wie 'my_func = decorator (my_func)', und so wird der Debugger tatsächlich in den 'decorator()'' Code einsteigen, da dies aufgerufen wird. Was Sie * tun * können, ist, einen Haltepunkt innerhalb der dekorierten Funktion zu platzieren; oder treten Sie einfach in den Dekorateur und * dann * treten Sie in die dekorierte Funktion ('B()'), sobald Sie im Dekorateur sind. – YellowShark

Antwort

1

In den Einstellungen können Sie festlegen, auf welche Python-Skripte der Debugger nicht zugreifen soll.

Einstellungen -> Build, Ausführung -> Debugger -> Stepping -> Python (sollte ganz unten sein).

Aktivieren Sie einfach das Kontrollkästchen "Nicht in Skripts einsteigen" und geben Sie die gewünschten Skripte an.

Here's a picture of my example for IntelliJ on macOS

+0

Ich fürchte, das funktioniert nicht für mich. Ich nehme an, das 'Skript' bedeutet den Namen der Datei, in die es nicht treten sollte. Aber wenn ich in meinem Debugger 'Step in' drücke, geht es in die Datei, die das Decorator-Definitionsereignis enthält, obwohl ich diese Datei als die zu überspringende Datei aufgelistet habe. –

+0

Dies ist genau das Problem, mit dem ich konfrontiert war, versuchen Sie, das Muster für den Dateinamen zu ändern, mein ursprünglicher Dateiname war debug_utils.py und das Muster, das ich wählte, war \ * debug_utils \ * (überprüfen Sie das Bild) –

Verwandte Themen