ワンクリックで
mc-fix-test-error
运行测试,认领并收敛项目代码中的一个测试错误
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
运行测试,认领并收敛项目代码中的一个测试错误
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | mc-fix-test-error |
| description | 运行测试,认领并收敛项目代码中的一个测试错误 |
./build/bin/RelWithDebInfo/mc_tests.exe --gtest_break_on_failure 2>&1 | tail -70
运行测试(通过命令行参数,让测试套件遇到第一个测试失败就停下来),认领并收敛项目代码中的一个测试错误。项目中的测试错误产生原因多种多样,可能是因为:
TODO,便于全文搜索)。如果这个问题的原因非常显然,你可以不用启动任何子代理。/include/minecraft-reborn/version.h这个文件如果git显示未提交,你不用理会,将其留在工作区即可,重点是处理其他文件。你需要随时留意:
D:\Minecraft\MC研究\Minecraft1.21.11源码\net\minecraft下的算法、逻辑、时序等,与原版任何一点点偏差都会导致偏离预期(因此你派出的子代理需要注意对比下mc与本项目源码)。但不要照搬,因为cpp和java的特性不同,项目的架构也不同,你需要根据cpp的特性和当前项目的架构进行合理的架构设计和调整。注意本项目基建已经相当完善(代码量已经100w+行),各种常数、常用工具函数、音频系统、粒子系统、资源包系统、命令系统、实体系统、物品系统、物理系统、碰撞、tick调度、存档等都已经有了相当完善的实现(另外world对象上面也挂了相当多的工具方法以便访问世界、操作世界等),务必充分探索以实现复用,避免重复实现。
mc_tests 在 main 中安装了 mc::assert::CrashHandler(参考 src/client/main.cpp、src/server/main.cpp),崩溃(SEH 访问违例、除零、栈溢出、纯虚调用、std::terminate、MC_ASSERT_RELEASE 触发的 abort)时输出调用栈和寄存器到 stderr。
但 GoogleTest 默认安装自己的 SEH 处理器(--gtest_catch_exceptions=1),会抢先捕获 SEH 并打印 unknown file: error: SEH exception with code 0x... thrown in the test body. 不带栈,CrashHandler 拿不到崩溃现场。要看到完整栈,必须禁用 gtest 的 SEH 捕获,让 CrashHandler 接管:
# 禁用 gtest SEH 捕获,崩溃时由 CrashHandler 输出完整调用栈
./build/bin/RelWithDebInfo/mc_tests --gtest_filter='ServerChunkManagerTest.GetChunkSync_MultipleChunks' --gtest_catch_exceptions=0
--gtest_catch_exceptions=0:关闭 gtest 的 SEH 捕获,SEH 直接传给 CrashHandler。Reason: ACCESS_VIOLATION - Read/Write access at address 0x...、寄存器转储、Stack trace:(帧序号 + 函数名 + 文件:行号)。--gtest_catch_exceptions=0(Linux/macOS 用信号处理,gtest 默认不捕获 SIGSEGV)。--gtest_filter 定位到单个用例,栈最干净。--gtest_break_on_failure 会让 gtest 抛 BREAKPOINT(被 CrashHandler 当作断点,不是原始崩溃点),调试时不要混用。为用户指定的代码范围增加性能追踪宏(Perfetto + Tracy 双轨)
认领并收敛项目代码中的一个TODO
基于测试驱动的开发(TDD),将当前项目的代码与 Minecraft 原版代码对齐,确保功能和逻辑都能准确复刻 Minecraft。
审查用户指定范围内的所有文件,列出架构重构计划并执行
参照mc源码,列出高质量计划,为项目实现新功能
审查用户指定范围内的文件,在保持逻辑大体不变的情况下,删除、简化不必要的内容,使其更清晰易懂。