我使用PyCharm IDE進行Python編程。檢查程序是否以調試模式運行
當我運行我的proframm時,是否有可能檢查我是否處於調試模式?
我使用pyplot作爲plt,並希望只顯示圖,如果我調試我的程序。是的,我可以有一個全局布爾型調試這是由我自己設置,但我尋找一個性感的解決方案。
感謝您的支持!
我使用PyCharm IDE進行Python編程。檢查程序是否以調試模式運行
當我運行我的proframm時,是否有可能檢查我是否處於調試模式?
我使用pyplot作爲plt,並希望只顯示圖,如果我調試我的程序。是的,我可以有一個全局布爾型調試這是由我自己設置,但我尋找一個性感的解決方案。
感謝您的支持!
根據文檔,settrace
/gettrace
功能可以以被用來實現Python調試:
sys.settrace(tracefunc)
設置系統的跟蹤功能,WHI 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
最好不要使用其他的編程平臺.... 用這個代替(如果你喜歡!): - https://www.python.org/downloads/windows/(If您使用的是Windows) https://www.python.org/downloads/mac-osx/(If您使用的是Mac OS)
在Python 3中:
import sys
if sys.gettrace():
# Debug mode is used
do_something_debug_only()
這是一個官方...在編譯將是最好的 –
反正你可以檢查,如果您的應用程序編譯,如你預期那麼工作.... –
PyCharm只是一個IDE,它不是一個不同的翻譯。 oO – MisterMiyagi