2016-07-28 4 views
3

Я использую программу PyCharm IDE для программирования на Python.Проверьте, работает ли программа в режиме отладки

Есть ли возможность проверить, находится ли я в режиме отладки или нет, когда я запускаю свою профамму?

Я использую pyplot как plt и хочу, чтобы фигура отображалась только в том случае, если я отлаживаю свою программу. Да, у меня могло бы быть глобальное логическое debug, которое установлено мной, но я ищу более сексуальное решение.

Благодарим вас за поддержку!

ответ

1

По документация, settrace/gettrace функции могут быть использованы для того, чтобы реализовать Python отладчик:

sys.settrace(tracefunc) 

Установите функцию трассировки системы, бее ch позволяет вам реализовать отладчик исходного кода Python в Python. Функция зависит от потока; для отладчика, поддерживающего несколько потоков, он должен быть зарегистрирован settrace() для каждого отлаживаемого потока.

Однако эти методы не могут быть доступны во всех реализациях:

CPython деталь реализации: settrace() функция предназначена только для осуществления отладчики, профилировщики, инструменты покрытия и нравится. Его поведение является частью платформы реализации, а не частью определения языка и, следовательно, может быть недоступно во всех реализациях Python .

Вы можете использовать следующий фрагмент кода для того, чтобы проверить, если кто-то отладки кода:

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) 

Это один работает для PDB:

$ 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') 

И 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

лучше не использовать другие платформы программирования .... использовать это вместо того, чтобы (если вам нравится!): - https://www.python.org/downloads/windows/(If вы используете окна) https://www.python.org/downloads/mac-osx/(If вы используете Mac Os)

+0

Это Official один ..., в котором компилирование будет в лучшем –

+0

В любом случае вы можете проверить, если ваше приложение компилирует и работает, как вы ожидали, то .... –

+0

PyCharm это просто IDE, это не другой переводчик. oO – MisterMiyagi

0

В Python 3:

import sys 
if sys.gettrace(): 
    # Debug mode is used 
    do_something_debug_only() 
Смежные вопросы