我使用PyCharm IDE进行Python编程。我以前使用Check if program runs in Debug mode中描述的方法来检查运行程序时是否处于调试模式。
然而,在PyCharm的2023.3更新之后,这些方法停止工作。例如,
sys.gettrace() is None
字符串
无论是否为调试模式,计算结果都为True
。
我使用PyCharm IDE进行Python编程。我以前使用Check if program runs in Debug mode中描述的方法来检查运行程序时是否处于调试模式。
然而,在PyCharm的2023.3更新之后,这些方法停止工作。例如,
sys.gettrace() is None
字符串
无论是否为调试模式,计算结果都为True
。
2条答案
按热度按时间uqxowvwt1#
我想我已经找到了一个新的解决方案,它建立在awesoon的this answer之上。
根据文档,可以使用
settrace
/gettrace
函数 * 或 *breakpointhook
* 函数 * 来实现Python调试器:字符串
设置系统的trace函数,该函数允许您在Python中实现Python源代码调试器。该函数是线程特定的;对于支持多线程的调试器,必须为每个正在调试的线程使用settrace()注册该函数。
型
这个钩子函数由内置的breakpoint()调用。默认情况下,它会将您放入PDB调试器,但它可以设置为任何其他函数,以便您可以选择使用哪个调试器。
您可以使用以下代码段来检查是否有人正在调试您的代码:
型
这一个适用于PDB:
型
现在它适用于PyCharm:
型
它也适用于Visual Studio Code
型
mfpqipee2#
它不仅是
PyCharm 2023.3
,而且是Python 3.12
用sys.monitoring
模块实现的PEP 669 – Low Impact Monitoring for CPython。我建议使用这个新模块的以下解决方案:
字符串