“frames are not available” 是调试时可能会遇到的错误消息,通常表示当前没有可用的调用栈帧。这意味着程序没有在调试模式下运行或者当前调试会话已经结束。
在 PyCharm 中使用 PyQt5 编写程序时,如果遇到上述情况,无法调试,可能是因为以下原因:
- PyQt5程序运行在独立的进程中,并且 PyCharm 默认调试器无法调试独立的进程。
- PyQt5程序的入口是QApplication.exec_(),这是一个事件循环,在事件循环中调试会有困难。
解决方法:
- 使用 pydevd-pycharm 或者 pycharm-debug 的插件来实现PyQt5程序的调试。
- 使用Qt for Python 的配套工具,例如 PyQt5-tools 中的 Qt Designer 和
QmlViewer来调试程序。
- 使用print语句来调试程序,将程序运行的信息打印出来。
- 使用断点条件,在断点上设置断点条件,在程序运行时当变量满足断点条件时触发断点。
- 使用Qt for Python 的配套工具,例如PyQt5-tools 中的Qt Creator来调试程序。
- 在PyCharm中设置项目解释器为pythonw.exe,因为pythonw.exe不会打开终端窗口而python.exe会打开,所以可以避免调试过程中的终端窗口阻塞。