mbun-runtime-debugging
调试 mbun 运行时测试失败/崩溃时用。提供仓库实测可用的定位配方——选二进制、单文件跑测、gdb 抓 backtrace、按 API 定位源码、常见坑排查清单、何时跳过。凡处理 bun 测试跑不过/段错误/hang/断言失败,先读本 skill 再动手,避免每个 task 重复摸索拖慢。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
调试 mbun 运行时测试失败/崩溃时用。提供仓库实测可用的定位配方——选二进制、单文件跑测、gdb 抓 backtrace、按 API 定位源码、常见坑排查清单、何时跳过。凡处理 bun 测试跑不过/段错误/hang/断言失败,先读本 skill 再动手,避免每个 task 重复摸索拖慢。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | mbun-runtime-debugging |
| description | 调试 mbun 运行时测试失败/崩溃时用。提供仓库实测可用的定位配方——选二进制、单文件跑测、gdb 抓 backtrace、按 API 定位源码、常见坑排查清单、何时跳过。凡处理 bun 测试跑不过/段错误/hang/断言失败,先读本 skill 再动手,避免每个 task 重复摸索拖慢。 |
把「一个 bun 测试文件跑不过」快速定位到 mbun 源码里那一处的实测配方。目标:最少时间/最少 token 定位,不重复摸索。
BIN=$(find target -name mbun -type f -printf "%T@ %p\n" | sort -rn | head -1 | cut -d' ' -f2)
必须按 最新 mtime 选:裸 find | head 会选到过期 fingerprint 目录或交叉编译(musl)产物。
"$BIN" test compat/bun/test/<path>.test.ts
mbun test 支持 -t 名称过滤与多文件;语料测试以单文件粒度最稳。compat/bun 目录启动(bun 自己的 CI 就在 repo root 跑)。tools/integration/safe-test.sh 30 "$BIN" test compat/bun/test/<path>
python3 tools/integration/bun_corpus_runner.py --bin "$BIN" --cwd compat/bun --discover compat/bun/test --sample-per-group 100000 --out target/integration/<run> --jobs 14 --timeout 30(内建逐例 systemd 沙箱、私有 TMPDIR、磁盘水位闸门;node 语料用 node_corpus_runner.py)。用法细节见 tools/integration/README.md 与 compat/README.md。测试输出直接给 (pass)/(fail) 逐条 + 失败断言的 expected/received。先只读那一条失败:
"$BIN" test compat/bun/test/<path> 2>&1 | grep -A8 -i "fail\|expect\|error" | head -40
拿到失败的 API 名 → 跳第 4 节定位源码。多数「近绿」文件(fail≤2)就是 1 个语义小缺口,不必通读整文件。
release 二进制带 debug_info、未 strip,gdb 可直接符号化。配方(debuginfod 关掉避免卡交互):
timeout 60 gdb -q -batch \
-ex "set debuginfod enabled off" -ex "set pagination off" \
-ex "run" -ex "bt" -ex "info threads" \
--args "$BIN" test compat/bun/test/<path> 2>&1 | tail -40
mbun:: / modules/... 帧——那通常就是 bug 点。-ex "b <func>" 再 run/bt。# JS 层绑定(Bun.*/node:*/Web API)几乎都在 modules/jsc/src
grep -rn "<apiName>" modules/jsc/src | head
# 纯逻辑子系统在对应 modules/<子系统>/src
grep -rln "<symbol>" modules/*/src | head
compat/bun/src/<子系统>(不黑盒臆测)。builtins/*.cppm(JS 侧)+ runtime/*.inc(host 侧,经 runtime.cppm 聚合)。image_closure 之后的 jsc builtins 分区必须自包 IIFE 且 const G = globalThis;,否则绑定静默失效(bind 不上、非报错)。新绑定看不到就查这个。set_fn 用 JSNativeStdFunction trampoline;JSC C-callback 内只用纯 C API,别裸跑会触发 GC 的内部路径。target/integration/*/tmp 留下不可读目录,mcpp 源扫描会被绊倒并产出残缺依赖图(表象是 failed to read compiled module)。chmod -R u+rwx 后删除即恢复;bounded_run.force_rmtree 已防复发。.cppm 声明同名模块会让根包构建静默乱序(曾发生 mbun.platform 冲突)。grep -rh "^export module" src modules | sort | uniq -d 查重。compat/bun/test/ 下任何文件都算作弊(该目录是只读上游输入)。mcpp test(快,只编该成员)。mcpp build(重,全链路)。多 agent 并行时禁各自根构建(build storm + 坏 gcm 缓存):要么交协调者统一构建,要么 worktree 隔离(独立 target)。mcpp clean --bmi-cache && mcpp build --no-cache 自愈。失败根因是整个缺失子系统 / 真实 driver / 工具链(mysql/postgres 驱动、napi addon 构建、真实 npm 包如 tunnel)时,不要在近绿清扫轮里硬啃——记一行「blocked on X」跳过,留给对应深挖轨。近绿清扫只吃「已加载已运行、差 1–3 断言」的文件。
git add <你改的文件>,禁 git commit -a(共享树会扫走别 agent 的暂存改动);push 前查全 origin/main..HEAD。message:fix(<scope>): <subject>;实质进展同步 changelog.md。
在本仓开发任何改动前用。规定 issue 先行的开发流程,按 bugfix / 优化 / 新功能分流;新功能须经 issue 充分讨论并在 .agents/docs 落地设计方案;衔接 tdd-workflow 与本体验证 / 测试 / CI / PR 规范。开发前先读本 skill。
为 mcpp 项目应用 Modern/Module C++ (C++23) 编码风格。适用于编写或审查带模块的 C++ 代码、命名标识符、组织 .cppm/.cpp 文件,或用户提及 mcpp、module C++、现代 C++ 风格时。
向本仓提交 issue / 发起讨论时用。规定一份好问题反馈的 SOP——软件/版本、报错信息、初步分析、相关资料,并去除本地隐私(用户名/token 等替换)。凡要创建 issue、反馈 bug、发起讨论,先读本 skill 再动手。
在 mbun 项目中开发任何功能或修复缺陷时使用。规定以 bun/node 原生测试集为验收标准的 TDD 开发循环、checkpoint 提交约定与记录流程。