Skip to main content
 首页 » 编程设计

python之隔离出现段错误的代码片段

2025年05月04日12mengfanrong

我有一个有时会产生段错误的函数调用。现在,我通过将这段代码放在一个单独的 Python 文件中并在我的主脚本中执行 Popen('python snippet.py') 来隔离它。在 Unix 系统上有更优雅的方法吗?

7 月 24 日更新

我发现以下内容很方便

if not os.fork(): 
  # do stuff that could segfault here 

这样做的好处是不必将所有初始化代码放在一个单独的文件中。显然在 Python 2.6 中还有 multiprocessing 模块支持进程间通信

请您参考如下方法:

为什么不找到它并修复它呢?

strace python yourapp.py yourargs and options >trace.out 2>&1 

然后,在发生段错误后尝试 tail -50 trace.out,您将看到它是如何导致段错误的。通常它是一个乱码指针,指向不属于进程的内存地址。如果您使用诸如 ctypes 之类的东西来访问共享库,则 Python 错误很可能会产生此类指针错误。

我