隔离段错误的代码片段

时间:2011-07-18 19:19:34

标签: python ubuntu fonts

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

更新7/24

我发现以下是方便的

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

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

1 个答案:

答案 0 :(得分:-1)

为什么不找到并修复它?

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

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