Skip to content

雷电模拟器启动命令崩溃时错误提示缺少返回码和 stderr #258

Description

@qiyinxi

问题描述

使用 M9A 自动代理启动雷电模拟器时,后端报错:

命令执行失败:

但错误信息后面为空,无法从前端/日志直接判断雷电命令实际失败原因。

从 traceback 看,失败发生在 LDManager.open() 调用雷电 dnconsole.exe launch --index <idx> 阶段,返回码为 3221225480,stdout/stderr 为空。

复现信息

  • 模拟器类型:雷电模拟器
  • 触发场景:M9A 自动代理启动用户任务时自动拉起模拟器
  • 失败位置:app/utils/emulator/ldplayer.pyLDManager.open()
  • 返回码:3221225480

期望表现

dnconsole.exe 启动失败时,错误信息应包含:

  • 执行的命令或关键参数
  • returncode
  • stdout
  • stderr

这样用户可以区分是路径配置错误、实例不存在、雷电自身崩溃,还是其他环境问题。

实际表现

当前只抛出:

命令执行失败:

雷电模拟器启动命令崩溃时错误提示缺少返回码和 stderr

RuntimeError: 命令执行失败:
...
File "app\\utils\\emulator\\ldplayer.py", line 100, in open
    raise RuntimeError(f"命令执行失败: {result.stdout}")
...
ProcessResult(stdout='', stderr='', returncode=3221225480)

raise RuntimeError(
    f"命令执行失败: returncode={result.returncode}, "
    f"stdout={result.stdout!r}, stderr={result.stderr!r}"
)


2026-06-22 12:50:06.406 | ERROR    | M9A 自动代理 | 用户: 4d13026f-c840-47e2-9fc8-d5be0861c922 - 模拟器启动失败: 
命令执行失败:
Traceback (most recent call last):

  File "C:\Users\qiyin\Documents\trae_projects\AUTO-MAS-with-M9A\main.py", line 205, in <module>
    main()
    └ <function main at 0x000002A2C8588A40>

  File "C:\Users\qiyin\Documents\trae_projects\AUTO-MAS-with-M9A\main.py", line 195, in main
    asyncio.run(run_server())
    │       │   └ <function main.<locals>.run_server at 0x000002A31257ECA0>
    │       └ <function run at 0x000002A2A4260680>
    └ <module 'asyncio' from 'C:\\Users\\qiyin\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\asyncio\\__init__.py'>

  File "C:\Users\qiyin\AppData\Local\Programs\Python\Python312\Lib\asyncio\runners.py", line 195, in run
    return runner.run(main)
           │      │   └ <coroutine object main.<locals>.run_server at 0x000002A312549E40>
           │      └ <function Runner.run at 0x000002A2A6332FC0>
           └ <asyncio.runners.Runner object at 0x000002A310D81580>
  File "C:\Users\qiyin\AppData\Local\Programs\Python\Python312\Lib\asyncio\runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           │    │     │                  └ <Task pending name='Task-1' coro=<main.<locals>.run_server() running at C:\Users\qiyin\Documents\trae_projects\AUTO-MAS-with-...
           │    │     └ <function BaseEventLoop.run_until_complete at 0x000002A2A6330C20>
           │    └ <ProactorEventLoop running=True closed=False debug=False>
           └ <asyncio.runners.Runner object at 0x000002A310D81580>
  File "C:\Users\qiyin\AppData\Local\Programs\Python\Python312\Lib\asyncio\base_events.py", line 678, in run_until_complete
    self.run_forever()
    │    └ <function ProactorEventLoop.run_forever at 0x000002A2A67F3600>
    └ <ProactorEventLoop running=True closed=False debug=False>
  File "C:\Users\qiyin\AppData\Local\Programs\Python\Python312\Lib\asyncio\windows_events.py", line 322, in run_forever
    super().run_forever()
  File "C:\Users\qiyin\AppData\Local\Programs\Python\Python312\Lib\asyncio\base_events.py", line 645, in run_forever
    self._run_once()
    │    └ <function BaseEventLoop._run_once at 0x000002A2A6332980>
    └ <ProactorEventLoop running=True closed=False debug=False>
  File "C:\Users\qiyin\AppData\Local\Programs\Python\Python312\Lib\asyncio\base_events.py", line 1999, in _run_once
    handle._run()
    │      └ <function Handle._run at 0x000002A2A62709A0>
    └ <Handle Task.task_wakeup(<Future finis...lt=3221225480>)>
  File "C:\Users\qiyin\AppData\Local\Programs\Python\Python312\Lib\asyncio\events.py", line 88, in _run
    self._context.run(self._callback, *self._args)
    │    │            │    │           │    └ <member '_args' of 'Handle' objects>
    │    │            │    │           └ <Handle Task.task_wakeup(<Future finis...lt=3221225480>)>
    │    │            │    └ <member '_callback' of 'Handle' objects>
    │    │            └ <Handle Task.task_wakeup(<Future finis...lt=3221225480>)>
    │    └ <member '_context' of 'Handle' objects>
    └ <Handle Task.task_wakeup(<Future finis...lt=3221225480>)>

  File "C:\Users\qiyin\Documents\trae_projects\AUTO-MAS-with-M9A\app\models\task.py", line 192, in _execute_task  
    await self.main_task()
          │    └ <function AutoProxyTask.main_task at 0x000002A2C9E01D00>
          └ AutoProxyTask(task=None, _task_group=<TaskGroup tasks=3 entered>, accomplish=<asyncio.locks.Event object at 0x000002A3128F1A3...

> File "C:\Users\qiyin\Documents\trae_projects\AUTO-MAS-with-M9A\app\task\M9A\AutoProxy.py", line 203, in main_task
    emulator_info = await self.emulator_manager.open(
                          │    │                └ <function LDManager.open at 0x000002A2C7CE76A0>
                          │    └ <app.utils.emulator.ldplayer.LDManager object at 0x000002A313B9F380>
                          └ AutoProxyTask(task=None, _task_group=<TaskGroup tasks=3 entered>, accomplish=<asyncio.locks.Event object at 0x000002A3128F1A3...

  File "C:\Users\qiyin\Documents\trae_projects\AUTO-MAS-with-M9A\app\utils\emulator\ldplayer.py", line 100, in open
    raise RuntimeError(f"命令执行失败: {result.stdout}")
                                  │      └ ''
                                  └ ProcessResult(stdout='', stderr='', returncode=3221225480)

RuntimeError: 命令执行失败:   看看咋回事

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions