我有一个有时会产生段错误的函数调用。现在,我通过将这段代码放在一个单独的 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 错误很可能会产生此类指针错误。
我
