由faulthandler

时间:2016-10-04 15:49:57

标签: python c python-2.7 ctypes faulthandler

我使用pythons ctypes与C框架交互,有时在解除引用ctypes结构指针时会出现分段错误。

要调试分段错误,我决定安装并启用faulthandler。 (faulthandler在2.7中不是默认值)

但是,当我在代码中使用faulthandler.enable()运行我的代码时,它运行完美无缺。删除faulthandler.enable()会使我的分段错误再次出现。

是否有一些错误处理程序改变了python代码的执行,可以解释分段错误的消失?

修改

问题已解决,因为faulthandler会覆盖分段错误的信号,因为它仍然需要在关闭进程之前生成堆栈跟踪。

我认为SEGV已经发出信号,因为内存超出了C的范围,但尚未重新分配。内存仍然很明显,这让我仍然可以使用<pointer>.from_address访问python中的内存,似乎因为python仍然可以访问内存值,faulthandler没有生成堆栈跟踪。

我的问题已经通过创建一个替代结构来解决,我希望它仍然可以帮助其他人遇到这个谜。

0 个答案:

没有答案