Nach die Dokumentation, settrace
/gettrace
Funktionen, um verwendet werden könnte Python-Debugger zu implementieren:
sys.settrace(tracefunc)
Stellen des Systems Trace-Funktion, whi ch erlaubt Sie einen Python-Quellcode-Debugger in Python zu implementieren. Die Funktion ist Thread-spezifisch; Damit ein Debugger mehrere Threads unterstützt, muss er unter Verwendung von settrace()
für jeden zu debuggenden Thread registriert werden.
Jedoch können diese Methoden nicht in allen Implementierungen zur Verfügung:
CPython Implementierung Detail: Die settrace()
Funktion zur Implementierung Debugger, Profiler nur vorgesehen ist, Coverage Tools und die mögen. Sein Verhalten ist Teil der Implementierungsplattform und nicht Teil der Sprachdefinition und daher möglicherweise nicht in allen Python-Implementierungen verfügbar.
Sie könnten den folgenden Ausschnitt verwenden, um zu überprüfen, ob jemand Ihren Code debuggen:
import sys
gettrace = getattr(sys, 'gettrace', None)
if gettrace is None:
print('No sys.gettrace')
elif gettrace():
print('Hmm, Big Debugger is watching me')
else:
print("Let's do something interesting")
print(1/0)
Dies ist für pdb funktioniert:
$ python -m pdb main.py
> /home/soon/Src/Python/main/main.py(3)<module>()
-> import sys
(Pdb) step
> /home/soon/Src/Python/main/main.py(6)<module>()
-> gettrace = getattr(sys, 'gettrace', None)
(Pdb) step
> /home/soon/Src/Python/main/main.py(8)<module>()
-> if gettrace is None:
(Pdb) step
> /home/soon/Src/Python/main/main.py(10)<module>()
-> elif gettrace():
(Pdb) step
> /home/soon/Src/Python/main/main.py(11)<module>()
-> print('Hmm, Big Debugger is watching me')
(Pdb) step
Hmm, Big Debugger is watching me
--Return--
> /home/soon/Src/Python/main/main.py(11)<module>()->None
-> print('Hmm, Big Debugger is watching me')
Und PyCharm:
/usr/bin/python3 /opt/pycharm-professional/helpers/pydev/pydevd.py --multiproc --qt-support --client 127.0.0.1 --port 34192 --file /home/soon/Src/Python/main/main.py
pydev debugger: process 17250 is connecting
Connected to pydev debugger (build 143.1559)
Hmm, Big Debugger is watching me
Process finished with exit code 0
Es ist die offizielle ... in dem Compilieren im besten –
sein Auf jeden Fall können Sie überprüfen, ob Ihre Anwendung kompiliert und arbeiten, wie Sie dann erwartet .... –
PyCharm ist nur eine IDE, es kein anderer Dolmetscher. oO – MisterMiyagi