关于 rspack-debugging
rspack-debugging 是使用 LLDB 和带调试符号的包诊断 Rspack 崩溃与死锁的技能,提供针对不同情形的流程,用于捕获回溯并在项目中保存调试文件。
主要功能
- 01基于 LLDB 诊断崩溃与死锁
- 02设置并还原调试包
- 03HMR 与构建故障排查指南
- 04核心转储与卡住进程的分析流程
- 05将回溯保存为项目调试文件
适用场景
- 01调查可复现的 HMR 崩溃
- 02捕获间歇性构建故障
- 03分析卡住的 Rspack 进程
- 04识别异步死锁
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ rstackjs/ agent-skills --skill rspack-debugging安装后在 Claude Code 中输入/rspack-debugging确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/guide_a_hmr_crash.mdguide_b_build_crash.mdguide_c_attach_to_stuck_process.mdguide_d_coredump_analysis_dev.mdguide_e_coredump_analysis_build.mdguide_f_async_deadlock.mdlldb.mdscripts/setup_debug_deps.cjs详细介绍
Rspack 调试
概述
本 Skill 将指导你如何捕获 Rspack(基于 Rust)的底层崩溃状态。使用 LLDB 调试器和包含调试符号的 Rspack 包,我们可以获取详细的堆栈回溯,这对定位问题至关重要。本指南侧重于非交互式自动调试,以便轻松捕获堆栈回溯。
准备工作
开始之前,请确保你的环境满足以下要求。
-
安装 LLDB:你必须安装 LLDB 调试器。
- macOS:运行
xcode-select --install - Linux:安装
lldb包(例如,apt-get install lldb) - 详细指南:references/lldb.md
- macOS:运行
-
替换调试包:
@rspack/core等生产环境包已剥离调试符号。要查看有用的堆栈信息,必须将它们替换为@rspack-debug/*系列包。自动替换脚本:
在 Skill 根目录下解析捆绑的
scripts/setup_debug_deps.cjs路径,同时将工作目录保留在用户的 项目中,然后运行:node "<skill-root>/scripts/setup_debug_deps.cjs"运行上述脚本会自动在
package.json中添加pnpm.overrides配置,将 Rspack 包指向对应的 Debug 版本。之后,请务必运行pnpm install更新依赖。
调试工作流
确定你的具体场景,并按照对应的指南操作。
详细指南
详细指南
指南 A:HMR 期间崩溃
场景:DevServer HMR 期间稳定复现崩溃/死锁。 阅读指南:references/guide_a_hmr_crash.md
指南 B:构建期间崩溃
场景:构建期间稳定复现崩溃/死锁(或频繁发生的不稳定构建崩溃)。 阅读指南:references/guide_b_build_crash.md
指南 C:附加到卡住的进程
场景:构建期间出现不稳定的死锁(随机发生)。 阅读指南:references/guide_c_attach_to_stuck_process.md
指南 D:核心转储分析(开发)
场景:DevServer HMR 期间出现不稳定的崩溃(难以通过交互方式捕获)。 阅读指南:references/guide_d_coredump_analysis_dev.md
指南 E:核心转储分析(构建)
场景:构建期间出现不稳定的崩溃。 阅读指南:references/guide_e_coredump_analysis_build.md
指南 F:异步死锁识别
场景:出现不稳定的异步死锁。主线程卡在 uv_run 中。
阅读指南:references/guide_f_async_deadlock.md
保存调试产物
对 Agent 的重要指示: 成功获取堆栈回溯或跟踪日志后,必须将其保存到用户项目目录中的本地文件,以便在会话结束后保留。
- 创建目录:确保项目根目录中存在名为
debug_artifacts的目录。 - 保存堆栈回溯:将
thread backtrace all的完整输出写入debug_artifacts/backtrace_<timestamp>.txt。 - 保存跟踪日志:(仅在使用 Tracing Skill 时)
恢复环境
调试完成后,将 package.json 恢复为使用生产环境包:
node "<skill-root>/scripts/setup_debug_deps.cjs" --restore
pnpm install
使用与准备工作中相同的 <skill-root> 解析结果。