我正在使用深度学习编译器TVM 。在我的工作流程中,能够使用import pdb; pdb.set_trace()
并放入调试器是很有用的。但是,pdb.set_trace()
在导入 TVM 后的任何时候都会导致段错误。
我当前的设置是 - Ubuntu 16.04(在适用于 Linux 的 Windows 子系统上运行,但这也发生在我的本机 16.04 机器上!) - Python 3.6
在 Windows 或 Mac 上不会出现此问题。
此问题仅在从命令行(即python3 minimum-reproducible-example.py
)运行脚本时出现,从python3
repl 运行时不会出现。
我用gdb做了一些调试,并缩小了范围:readline
导入包时出现错误。
最小可重现示例:
import tvm
import readline
使用 gdb 调试后,我将其跟踪到 cpython 中的特定行:
Program received signal SIGSEGV, Segmentation fault.
PyModule_GetState (m=0x0) at Objects/moduleobject.c:558
558 if (!PyModule_Check(m)) {
在这种情况下,m
is 0x0
,函数似乎没有预料到。
如果有人甚至可以向我指出更有用的调试方法,那将很有帮助!