Segmentation Fault Catch(分段错误捕获)
本文介绍了分段错误捕获的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个 python 脚本,它会遍历一堆 maya 文件并做一些事情.但是有时玛雅会出现段错误,我的脚本会停在那里.我尝试使用 signal
和 multiprocess
.但都失败了.
I have a python script and it will loop through bunch of maya files and do some stuff. But some time maya get seg fault and my script will stop there. I tried with signal
and multiprocess
. But both failed.
import os, optparse, glob, json, signal
import maya.standalone
import maya.cmds as cmds
from multiprocessing import Process, Queue
def loadMayaBd():
maya.standalone.initialize(name='python')
def sig_handler(signum, frame):
print "segfault"
def doSome(args, options):
signal.signal(signal.SIGSEGV, sig_handler)
loadMayaBd()
#from here its just a example
fileNameList = args[0]
for eachFile in fileNameList:
#this is throwing the seg fault
#I want continue my for llop even if there is any segfault
#I don't want to exit python coz of that segfault
cmds.file(eachFile, force = 1, open = 1)
if __name__ == "__main__":
usage = "usage: %prog [options] args(file list)"
parser = optparse.OptionParser(usage)
parser.add_option("-l", "--log", dest="log",
help="Log File Path", metavar="LOG_FILE")
parser.add_option("-v", "--verbose", dest="verbose",
help="Print All Logs", metavar="VERBOSE", default=False, action='store_true')
(options, args) = parser.parse_args()
if len(args) <= 0:
errorMsg = "You must pass file path list for crawling"
raise RuntimeError(errorMsg)
p = Process(target=doSome, args=(args, options))
p.start()
p.join()
有没有其他方法可以捕获 seg fault 并继续下一步?
Is there any other method which can trap seg fault and continue with next?
推荐答案
这对我有用:
import os
import signal
def sig_handler(signum, frame):
print("segfault")
signal.signal(signal.SIGSEGV, sig_handler)
os.kill(os.getpid(), signal.SIGSEGV)
while True:
pass
您确定要在生成的每个进程中捕获段错误吗?
Are you sure you are trapping the segfault in each process that you are spawning?
这篇关于分段错误捕获的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:分段错误捕获


基础教程推荐
猜你喜欢
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- 筛选NumPy数组 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01