一键导入
dmp-analysis
分析 Windows 崩溃转储文件(.dmp),诊断 MaaFramework / MXU 项目及其依赖项的崩溃。用于 issue 日志包或附件中发现 .dmp 文件,或用户要求分析 DMP / 崩溃转储时。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
分析 Windows 崩溃转储文件(.dmp),诊断 MaaFramework / MXU 项目及其依赖项的崩溃。用于 issue 日志包或附件中发现 .dmp 文件,或用户要求分析 DMP / 崩溃转储时。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
调试和优化 MaaFramework Pipeline JSON。用于对照 schema 验证配置,检测缺失引用、循环依赖、孤立节点、命名与行为不匹配、ROI/阈值问题,并给出可靠性、性能和可维护性改进建议。触发词包括 debug pipeline、validate pipeline、optimize pipeline、pipeline error。
MaaFramework Pipeline JSON 编写指南。用于编写、修改或审查 Pipeline JSON,设计节点流程,使用 TemplateMatch/OCR/ColorMatch/Custom 识别或 Click/Swipe/Custom 动作,并检查 MaaFramework 项目的通用 Pipeline 可靠性。
MDA 项目专属开发指南。用于在 MDA 中编写或审查 MaaFramework Pipeline、Project Interface 任务、locale、go-service 组件时补充项目结构、业务域、命名习惯和现有任务选项示例。与通用 pipeline-guide、pipeline-debug、generate-pi-task、go-service-guide 配合使用。
根据 MaaFramework Pipeline 定义生成或更新 Project Interface 任务 JSON。用于创建、编辑或扩展 assets/tasks/ 下的任务文件,将 Pipeline 节点映射为用户可配置选项(switch/select/checkbox/input)并绑定 pipeline_override。
MaaFramework C++ 日志宏用法指南。用于写 C++ MaaFramework 扩展、Custom 组件或工具代码时使用 LogInfo/LogError/LogWarn/LogDebug/LogTrace、VAR、容器输出和自定义类型日志。
分析 MDA 公开 Issue、日志包或本地日志。用于 `https://github.com/1204244136/MDA/issues/...`、`#1234`、MDA 日志压缩包、识别失败、任务卡死、控制器差异、Pipeline/Agent/MXU 问题。会从 maafw.log、maafw.bak.*.log、go-service.log、mxu-tauri.log、mxu-web-*.log、mxu-agent*.log、config/*、on_error/ 中筛选证据,并结合 MDA、MaaFramework、MXU 代码和文档判断根因。
| name | dmp-analysis |
| description | 分析 Windows 崩溃转储文件(.dmp),诊断 MaaFramework / MXU 项目及其依赖项的崩溃。用于 issue 日志包或附件中发现 .dmp 文件,或用户要求分析 DMP / 崩溃转储时。 |
.dmp) files from MaaFramework / MXU based projects.需要 minidump-stackwalk 和 dump_syms。
检查:
Get-Command minidump-stackwalk
Get-Command dump_syms
若本地缺失,按当前项目 CI / workflow / 文档安装;不要在未经用户同意时擅自安装全局工具。
将 .dmp 放到临时分析目录,例如:
.cache/dmp-analysis/issue-<number>/
.cache/dmp-analysis/local-<timestamp>/
来源可能是:
.dmp。.dmp。minidump-stackwalk "<path-to-dmp>"
先获取:
根据异常地址或 crashing thread 顶部帧识别疑似崩溃模块。
DMP 文件名常包含崩溃进程 PID,例如:
Project.exe.18188.dmp → PID 18188
用该 PID 与日志交叉验证:
maafw.log 中的 [Px18188]。mxu-tauri.log 中的实例 / agent / 进程生命周期。go-service.log 或 agent stdout/stderr 中的启动信息。确认 DMP 对应的运行会话,避免把不同时间的日志混在一起。
DMP 模块版本字段可能为空,优先从日志和配置获取:
| 优先级 | 来源 | 线索 |
|---|---|---|
| 1 | mxu-tauri.log | MXU / MaaFramework 初始化版本 |
| 2 | go-service.log | PI environment / client version |
| 3 | config 文件 | interface.json、maa_option.json、项目配置 |
| 4 | issue 正文 | 用户报告版本 |
| 5 | DMP 模块列表 | 模块 version 字段,可能为 ? |
记录:
$MaaVersion = "<version>"
$Work = "<analysis-dir>"
Invoke-WebRequest "https://github.com/MaaXYZ/MaaFramework/releases/download/v$MaaVersion/MAA-win-x86_64-v$MaaVersion.zip" -OutFile "$Work\maa-fw.zip"
Expand-Archive "$Work\maa-fw.zip" "$Work\maa-fw" -Force
常见 PDB:
| PDB | 模块 |
|---|---|
MaaFramework.pdb | MaaFramework.dll |
MaaUtils.pdb | MaaUtils.dll |
MaaToolkit.pdb | MaaToolkit.dll |
MaaWin32ControlUnit.pdb | MaaWin32ControlUnit.dll |
MaaAdbControlUnit.pdb | MaaAdbControlUnit.dll |
MaaAgentServer.pdb | MaaAgentServer.dll |
MaaAgentClient.pdb | MaaAgentClient.dll |
$MxuVersion = "<version>"
Invoke-WebRequest "https://github.com/MistEO/MXU/releases/download/v$MxuVersion/MXU-win-x86_64-v$MxuVersion.zip" -OutFile "$Work\mxu.zip"
Expand-Archive "$Work\mxu.zip" "$Work\mxu" -Force
mxu.pdb 通常位于压缩包根目录。
.sym$PdbDir = "$Work\pdb"
$Symbols = "$Work\symbols"
New-Item -ItemType Directory -Force $Symbols | Out-Null
Get-ChildItem $PdbDir -Filter *.pdb | ForEach-Object {
$name = $_.BaseName
$header = & dump_syms $_.FullName 2>$null | Select-Object -First 1
$debugId = ($header -split '\s+')[3]
$dest = Join-Path $Symbols "$name.pdb\$debugId"
New-Item -ItemType Directory -Force $dest | Out-Null
& dump_syms $_.FullName > (Join-Path $dest "$name.sym")
}
minidump-stackwalk "<path-to-dmp>" "$Work\symbols"
输出应包含函数名、源码路径和行号。如果符号化失败,报告原因并保留 module+offset 堆栈。
EXCEPTION_ACCESS_VIOLATION (0xC0000005):空指针、悬垂指针、use-after-free。EXCEPTION_STACK_OVERFLOW (0xC00000FD):无限递归或栈对象过大。EXCEPTION_ILLEGAL_INSTRUCTION (0xC000001D):CPU 指令集、二进制损坏或错误模块。STATUS_STACK_BUFFER_OVERRUN (0xC0000409):Windows fast-fail,不一定是真缓冲区溢出。
0x7 常见于 std::terminate() / abort(),可能是未捕获 C++ 异常。ucrtbase.dll。EXCEPTION_BREAKPOINT (0x80000003):断点、assert、panic 或主动触发崩溃。Maa*.dll:MaaFramework 运行时或控制器。mxu.exe:MXU/Tauri/Rust 层。onnxruntime_*.dll、opencv_*、OCR/推理库:第三方依赖。DirectML.dll、显卡驱动相关模块:图形/推理运行时。ntdll.dll、KERNELBASE.dll、ucrtbase.dll:通常要看上层调用者。如果符号化帧涉及 MaaFramework 或 MXU,并能确定版本,按需 clone 对应 tag 到临时目录:
git clone --depth 1 --branch "v<VERSION>" "https://github.com/MaaXYZ/MaaFramework.git" ".cache\upstream-src\MaaFramework"
git clone --depth 1 --branch "v<VERSION>" "https://github.com/MistEO/MXU.git" ".cache\upstream-src\MXU"
定位到具体源码行后,在报告中给出远端 GitHub blob 链接。
## DMP 分析结果
- DMP 文件:`<filename>`
- 操作系统:`<OS version>`
- 异常类型:`<EXCEPTION_*>` (`<hex>`)
- 崩溃模块:`<module>+<offset>`
- 符号化状态:已符号化 / 仅 module+offset
## 崩溃堆栈(crashing thread)
```text
Frame 0: ...
Frame 1: ...
```
## 关键模块版本
| Module | Version |
| ------------------ | ------- |
| MaaFramework.dll | ... |
| mxu.exe | ... |
| Project executable | ... |
## 根因判断
- 崩溃归属:MaaFramework / MXU / 项目扩展 / 第三方依赖 / 未知
- 分析:...
- 置信度:高 / 中 / 低
## 建议
- 用户可尝试:...
- 开发者修复方向:...
- 还缺的证据:...
分析完成后可删除临时目录;删除前确认没有用户需要保留的附件或中间产物。