Python 如何查找段错误(Segment Fault)
Python 调试选项
有时我们的程序出错的上下文不在 Python 解释器中,而是在调用外部库时出现的,例如 Segmentation Fault。这时我们可以通过 Python 的 -X faulthandler
选项来打印出错误的堆栈信息。
bash
python -X faulthandler test.py
问题背景
在开发 PySide6 GUI 程序时出现了闪退错误,Windows 上不显示任何内容直接崩溃,Mac OS 上出现段错误(内容已转储)。常规调试方法无法得出错误出现的位置,因为出错的位置不是在 Python 解释器执行时出现的,而是在执行外部扩展时出现的。
通过上述成功定位到问题:发现是 QThread
线程中调用了 UI 功能导致的。PySide6 要求线程想修改或读取 UI 控件的内容必须借助信号通信。