我正在使用深度学习编译器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
副本运行时则不会出现。
我已经使用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
是0x0
,该函数似乎并不期望。
如果有人甚至可以向我指出更有用的方法来调试它,那将很有帮助!