원클릭으로
windows-dmp-analysis
// 分析 Windows 崩溃转储文件(.dmp),诊断 MaaNTE 及其依赖项(MaaFramework、MXU)的崩溃。自动从 GitHub Releases 下载对应版本 PDB 符号,使用 minidump-stackwalk 解析堆栈轨迹并定位崩溃根因。当 issue 日志包或附件中发现 .dmp 文件,或用户要求分析 DMP/崩溃转储时使用。
// 分析 Windows 崩溃转储文件(.dmp),诊断 MaaNTE 及其依赖项(MaaFramework、MXU)的崩溃。自动从 GitHub Releases 下载对应版本 PDB 符号,使用 minidump-stackwalk 解析堆栈轨迹并定位崩溃根因。当 issue 日志包或附件中发现 .dmp 文件,或用户要求分析 DMP/崩溃转储时使用。
MaaNTE Pipeline JSON 编写指南。基于 MaaFramework Pipeline 协议,提供节点命名、识别算法、动作类型、流程控制、可复用节点等编码规范与模式参考。在编写、修改或审查 Pipeline JSON、设计节点流程、使用 TemplateMatch/OCR/Custom 识别或 Click/Swipe 动作时使用。
MaaNTE Python 自定义动作(CustomAction)编写指南。覆盖 agent/custom/action/ 下的 Python 代码的架构、注册、命名、maafocus 用户消息、日志、Controller API、Pipeline 集成、错误处理等编码规范和模式参考。在编写、修改或审查 Python 自定义动作,或需要了解 agent 项目结构与 MaaFramework Python 绑定集成方式时使用。
MaaNTE 任务配置(tasks/*.json)编写指南。覆盖任务入口、选项类型(switch/input/select)、pipeline_override、i18n、控制器限制等。在添加新任务、修改任务选项、配置 pipeline_override 时使用。
分析 MaaNTE 上游仓库公开 Issue(`https://github.com/1bananachicken/MaaNTE/issues/...` 或 `#1234`)。自动抓取 issue 正文和评论中的日志附件(`MaaNTE-logs-*.zip` 或裸日志文件),下载解压后从 `maa.log`、agent 日志(`debug/custom/`)、`mxu-tauri.log`、`mxu-web-*.log`、`mxu-agent*.log`、`config/*`、`on_error/` 截图、`.dmp` 崩溃转储中筛选关键证据,并结合 MaaNTE 当前仓库代码、MaaFramework 文档、MXU 文档判断根因、给出修复方案。供分析 MaaNTE issue、日志包、识别失败、任务卡死、控制器差异、Pipeline/Agent/MXU 问题时使用。
用"赛博道士 + 故障玄学 + 半懂不懂技术分析"的风格回复 MaaNTE 用户的简略求助。用于用户只给一句模糊问题、没有日志、没有截图、没有报错时,做一段短小离谱但认真的玄学诊断。触发词可包括"赛博算卦""玄学回复""评论区整活""帮我写一段离谱但正经的故障分析"
MaaNTE Python 日志规范。覆盖 agent/utils/logger.py 的 loguru/标准 logging 使用方式、日志级别选择、格式化与最佳实践。在编写或修改 agent/ 下的 Python 代码、添加日志输出、或审查日志质量时使用。
| name | windows-dmp-analysis |
| description | 分析 Windows 崩溃转储文件(.dmp),诊断 MaaNTE 及其依赖项(MaaFramework、MXU)的崩溃。自动从 GitHub Releases 下载对应版本 PDB 符号,使用 minidump-stackwalk 解析堆栈轨迹并定位崩溃根因。当 issue 日志包或附件中发现 .dmp 文件,或用户要求分析 DMP/崩溃转储时使用。 |
x86_64 → aarch64 in all download URLs.在本仓库的 CI workflow 中会安装并确保 minidump-stackwalk 和 dump_syms 可用。如果你在本地复现或手动运行本流程,需要自行安装这些工具:
which minidump-stackwalk && which dump_syms
If either is missing, install via:
curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash
cargo binstall -y --no-confirm minidump-stackwalk dump_syms
Download .dmp to .cache/dmp-analysis/issue-<number>/.
Sources:
.dmp)MaaNTE-logs-*.zip log packageWORK=".cache/dmp-analysis/issue-<NUMBER>"
mkdir -p "$WORK"
curl -L "<dmp_url>" -o "$WORK/crash.dmp"
minidump-stackwalk "$WORK/crash.dmp" 2>/dev/null
This gives without any symbols: OS info, exception type, module list with versions, raw stack frames.
Identify the crashing module from the exception address or the top stack frame.
DMP module version info is frequently empty/unavailable. Prefer log and config sources:
| Priority | Source | How |
|---|---|---|
| 1 | MXU logs | maa_init success, version: v5.x.x |
| 2 | Agent logs | PI_CLIENT_MAAFW_VERSION in PI environment log |
| 3 | Config files from logs package | interface.json, config files |
| 4 | Issue text | User-reported version |
| 5 | Module list in stackwalk output | Version column (often shows ?) |
Record:
5.9.2)1.21.2)MAA_VER="<version>" # e.g. 5.9.2
curl -sL "https://github.com/MaaXYZ/MaaFramework/releases/download/v${MAA_VER}/MAA-win-x86_64-v${MAA_VER}.zip" \
-o "$WORK/maa-fw.zip"
unzip -joq "$WORK/maa-fw.zip" 'symbol/*.pdb' -d "$WORK/pdb/"
PDB files inside symbol/:
| PDB | Corresponding Module |
|---|---|
| MaaFramework.pdb | MaaFramework.dll — core pipeline runtime |
| MaaUtils.pdb | MaaUtils.dll — utility library |
| MaaToolkit.pdb | MaaToolkit.dll — toolkit |
| MaaWin32ControlUnit.pdb | MaaWin32ControlUnit.dll — Win32 controller |
| MaaAdbControlUnit.pdb | MaaAdbControlUnit.dll — ADB controller |
| MaaAgentServer.pdb | MaaAgentServer.dll — agent server |
| MaaAgentClient.pdb | MaaAgentClient.dll — agent client |
| MaaPiCli.pdb | MaaPiCli.exe — CLI entry |
MXU_VER="<version>" # e.g. 1.21.2
curl -sL "https://github.com/MistEO/MXU/releases/download/v${MXU_VER}/MXU-win-x86_64-v${MXU_VER}.zip" \
-o "$WORK/mxu.zip"
unzip -joq "$WORK/mxu.zip" 'mxu.pdb' -d "$WORK/pdb/"
mkdir -p "$WORK/symbols"
for pdb in "$WORK/pdb/"*.pdb; do
name=$(basename "$pdb" .pdb)
header=$(dump_syms "$pdb" 2>/dev/null | head -1)
debug_id=$(echo "$header" | awk '{print $4}')
dest="$WORK/symbols/${name}.pdb/${debug_id}"
mkdir -p "$dest"
dump_syms "$pdb" > "$dest/${name}.sym" 2>/dev/null
done
minidump-stackwalk "$WORK/crash.dmp" "$WORK/symbols" 2>/dev/null
EXCEPTION_ACCESS_VIOLATION (0xC0000005) — null/dangling pointer, use-after-freeEXCEPTION_STACK_OVERFLOW (0xC00000FD) — infinite recursion or oversized stack allocationEXCEPTION_ILLEGAL_INSTRUCTION (0xC000001D) — corrupted code or wrong CPU featureSTATUS_STACK_BUFFER_OVERRUN (0xC0000409) — NOT always a real buffer overrun. Check the first exception parameter:
0x7 = FAST_FAIL_FATAL_APP_EXIT — std::terminate() / abort() was called, typically from an unhandled C++ exception (e.g. cv::Exception from OpenCV). This is the most common crash pattern.0x2 = FAST_FAIL_RANGE_CHECK_FAILUREEXCEPTION_BREAKPOINT (0x80000003) — deliberate crash / assertion failure / Rust panicMaa*.dll → MaaFramework → upstream MaaXYZ/MaaFrameworkmxu.exe → MXU → upstream MistEO/MXUonnxruntime_maa.dll, opencv_world4_maa.dll → third-party inference/visionDirectML.dll → DirectX ML runtimentdll.dll, KERNELBASE.dll, ucrtbase.dll → OS / CRT; look at the caller frames aboveucrtbase.dll with code 0xC0000409, the real crash site is in the caller frames, not ucrtbase itselfIf the crash is in MaaFramework:
git clone --depth 1 --branch "v${MAA_VER}" \
https://github.com/MaaXYZ/MaaFramework.git ".cache/upstream-src/MaaFramework"
If the crash is in MXU:
git clone --depth 1 --branch "v${MXU_VER}" \
https://github.com/MistEO/MXU.git ".cache/upstream-src/MXU"
Look up the function and line from the symbolicated stack trace in the cloned source.
## DMP 分析结果
- DMP 文件:`<filename>`
- 操作系统:`<OS version>`
- 异常类型:`<EXCEPTION_*>`
- 崩溃模块:`<module_name>` (版本 `<version>`)
- 崩溃函数:`<symbolicated function name>`
## DMP 崩溃分析
### 崩溃堆栈(crashing thread)
<crashing thread 的全部有效符号化堆栈帧>
### 关键模块版本
| Module | Version |
| ---------------- | ------- |
| mxu.exe | ... |
| MaaFramework.dll | ... |
| ... | ... |
### 根因判断
- 崩溃归属:MaaFramework / MXU / 第三方依赖 / 未知
- 分析:...
- 置信度:高 / 中 / 低
### 建议
- 对用户的建议(升级、绕过方案等)
- 对开发者的建议(上游报告、修复方向)
After analysis is complete:
rm -rf ".cache/dmp-analysis/issue-<NUMBER>"