Проверьте, работает ли программа в режиме отладки
Я использую PyCharm IDE для программирования Python.
есть ли возможность проверить, нахожусь ли я в режиме отладки или нет, когда я запускаю свой proframm?
Я использую pyplot как plt и хочу, чтобы рисунок был показан только при отладке моей программы. Да, у меня может быть глобальное логическое debug который установлен мной, но я ищу более сексуальное решение.
Спасибо за Вашу поддержку!
1 ответов
согласно документации, settrace
/ gettrace
функции могут использоваться для реализации отладчика Python:
sys.settrace(tracefunc)
установите функцию трассировки системы, которая позволяет вы должны реализовать отладчик исходного кода 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