2

我正在使用深度学习编译器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)运行脚本时出现,从python3repl 运行时不会出现。

我用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)) {                  

在这种情况下,mis 0x0,函数似乎没有预料到。

如果有人甚至可以向我指出更有用的调试方法,那将很有帮助!

4

0 回答 0