使用子进程模块获取崩溃程序的输出时遇到问题。我正在使用python2.7和子进程来调用带有奇怪参数的程序,以获得一些段错误。为了调用该程序,我使用以下代码:
proc = (subprocess.Popen(called,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE))
out,err=proc.communicate()
print out,err
被调用的是一个包含程序名称和参数的列表(一个包含随机字节的字符串,除了子进程根本不喜欢的NULL字节)
该代码的行为会在程序不崩溃时向我显示stdout和stderr,但是在程序崩溃时,out和err为空,而不是显示著名的“分段错误”。
我希望找到一种方法,即使程序崩溃也不会出错。
希望有人在这里:)
PS:我也尝试过check_output / call / check_call方法
编辑:
我正在python虚拟环境中的Archlinux 64位系统上运行此脚本(此处不重要,但您永远不知道:p)
段错误发生在我尝试运行的C程序中,并且是缓冲区溢出的结果
问题是,当发生段错误时,我无法获得子进程发生的结果的输出
我得到正确的返回码:-11(SIGSEGV)
使用python我得到:
./dumb2 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
(‘Exit code was:’, -11)
(‘Output was:’, ‘’)
(‘Errors were:’, ‘’)
在python外时,我得到:
./dumb2 $(perl -e "print 'A'x50")
BEGINNING OF PROGRAM
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
END OF THE PROGRAM
Segmentation fault (core dumped)
外壳程序的返回值是相同的:echo $?返回139 so -11($?&128)
编辑:回到这里:它与python3的子进程一样具有魅力,如果您在linux上,则有一个名为subprocess32的python2反向移植,可以很好地完成工作
def cmdlineCall(name, args):
child = pexpect.spawn(name, args)
# Wait for the end of the output
child.expect(pexpect.EOF)
out = child.before # we get all the data before the EOF (stderr and stdout)
child.close() # that will set the return code for us
# signalstatus and existstatus read as the same (for my purpose only)
if child.exitstatus is None:
returncode = child.signalstatus
else:
returncode=child.exitstatus
return (out,returncode)
PS:慢一点(因为它会生成伪tty)
Kafka过去在我自己的电脑上工作得很好。我正在另一台电脑上工作,上面写着 为目录C:\tmp\kafka logs(kafka.server.LogDirFailureChannel)java中的\uu consumer\u offset-41创建日志时出错。木卫一。IOException:映射在sun失败。尼奥。总经理。Kafka地图(FileChannelImpl.java:940)。日志抽
本文向大家介绍iOS 捕获程序崩溃日志,包括了iOS 捕获程序崩溃日志的使用技巧和注意事项,需要的朋友参考一下 iOS开发中遇到程序崩溃是很正常的事情,如何在程序崩溃时捕获到异常信息并通知开发者? 下面就介绍如何在iOS中实现: 1. 在程序启动时加上一个异常捕获监听,用来处理程序崩溃时的回调动作 官方文档介绍:Sets the top-level error-handling function
问题内容: 我正在Windows命令提示符下运行python脚本。它调用下面的函数,该函数使用LAME将MP3文件转换为wave文件。 不幸的是,LAME总是在某些MP3上崩溃(并达到其名称)。出现Windows“您的程序已崩溃”对话框,该对话框冻结了我的脚本。关闭窗口对话框后,将引发AudioProcessingException。无需告诉Windows关闭,我只想脚本引发异常,然后转到下一个M
把我的城市飞艇升级到7.2。没有编译错误和应用程序运行良好,直到它收到一个推送消息。此时,它将崩溃,出现以下堆栈跟踪: 当我检查类是否可见(Cmd-O)并开始键入时,类立即出现。 有人遇到过这个吗?我不知道怎么修好它。多谢了。
我注意到,当我在后台发送FCM负载时,我看到通知消息被显示,这与文档一致,但我看到收到的每个通知消息的本机通知。当我的应用程序在后台时,我收到了3条推送消息(带有通知负载),现在我在通知托盘中看到了3条本机通知。为什么他们没有崩溃?默认情况下,根据FCM文档,所有通知消息都是可折叠的。参考文件:https://firebase.google.com/docs/cloud-messaging/con
JAVAlang.Exception在c.b.a.a.f.b.a(未知源:0)在c.b.a.a.e.c.nc的初始化错误。(未知来源:12)在c.b.a.a.b.a.(未知来源:8)在com。谷歌。火基。不应用消息传递。内部的注射模块。ClearcutLoggerClientModule。在此处输入代码时提供ClearCutClient(未知来源:5)。谷歌。火基。不应用消息传递。内部的注射模块。