由faulthand修复的Ctypes分割错误

2024-05-16 02:20:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用pythons ctypes与C框架交互,有时在取消对ctypes结构指针的引用时会出现分段错误。你知道吗

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

但是,当我用faulthandler.enable启用()在代码中运行完美。卸下faulthandler.enable启用()使我的分段错误再次出现。你知道吗

在python代码的执行过程中,faulthandler有什么变化可以解释分段错误的消失吗?你知道吗

编辑

这个问题得到了解决,因为faulthandler重写了分段错误的信号,这样做是因为它仍然需要在关闭进程之前生成stacktrace。你知道吗

我认为SEGV发出信号是因为内存超出了C的作用域,但是还没有重新分配。内存仍然在tact中,这允许我仍然使用<pointer>.from_address访问python中的内存,似乎因为python仍然可以访问内存值,faulthandler没有生成stacktrace。你知道吗

我的问题已经解决了创造一个替代建设,我希望它仍然有助于其他人遇到这个谜。你知道吗


Tags: 内存代码框架enable过程错误ctypes结构