【问题标题】:Getting exception information of sub process获取子进程的异常信息
【发布时间】:2013-12-20 11:09:35
【问题描述】:

我想做一个简单的windows可执行加载程序 在 python 中使用 os.system('./calc.exe') 简单地实现 或 Windows API 中的 WinExec(...)、CreateProcess(...)...

这将是一项非常简单易行的任务。 但是,如果我的子进程崩溃,我希望收到详细的错误报告。

我知道我可以得到错误编号代码作为返回值 Python中的Popen.call()之类的函数,或者其他的……

但是当windows二进制崩溃时,我可以看到详细的错误报告 其中包含崩溃模块的名称、违规代码(0xC0000005 等) 崩溃模块的偏移量、时间等...

我如何从父进程中获取这些信息?实现这些信息的最简单方法是什么?

提前谢谢你。

【问题讨论】:

    标签: python winapi process error-handling


    【解决方案1】:

    我还没有测试过这个,但是像这样的东西应该可以解决问题:

    import logging
    import subprocess
    
    cmd = "ls -al /directory/that/does/not/exist"  # <- or Windows equivalent
    logging.info(cmd)
    try:
        process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    except OSError, err:
        logging.error(err.child_traceback)
    (stdout, stderr) = process.communicate()
    logging.debug(stdout)
    if not stderr is None:
        logging.error(stderr)
    

    【讨论】:

    • 谢谢,但它并没有给我我想要的,它只是打印 ERROR:root:... 我想要得到的是崩溃子进程的 Windows 错误报告结果..
    猜你喜欢
    • 2016-04-21
    • 1970-01-01
    • 2012-11-15
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    相关资源
    最近更新 更多