2016-07-28 16 views
3

Ich verwende die PyCharm IDE für Python-Programmierung.Prüfen, ob Programm im Debug-Modus läuft

Gibt es eine Möglichkeit zu überprüfen, ob ich im Debugging-Modus bin oder nicht, wenn ich mein proframm starte?

Ich benutze pyplot als plt und will eine Abbildung nur angezeigt werden, wenn ich mein Programm debuggen. Ja, ich könnte einen globalen booleschen Debug haben, der von mir selbst eingestellt wird, aber ich suche nach einer sexiereren Lösung.

Vielen Dank für Ihre Unterstützung!

Antwort

1

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 
-1

Es ist besser, nicht auf andere Programmierplattformen zu verwenden .... Verwendung dieses statt (wenn Sie mögen!): - https://www.python.org/downloads/windows/(If Sie Windows) https://www.python.org/downloads/mac-osx/(If Sie Mac Os)

+0

Es ist die offizielle ... in dem Compilieren im besten –

+0

sein Auf jeden Fall können Sie überprüfen, ob Ihre Anwendung kompiliert und arbeiten, wie Sie dann erwartet .... –

+0

PyCharm ist nur eine IDE, es kein anderer Dolmetscher. oO – MisterMiyagi

0

In Python 3:

import sys 
if sys.gettrace(): 
    # Debug mode is used 
    do_something_debug_only()