第 28 课：调试实验室：亲手找出三个 bug

请先阅读对应网页。这里按章节提供代码，可能包含先后替换的实验版本，不要全部同时运行。
.luau 文件内容请复制到指定 Script / LocalScript / ModuleScript；.txt 是层级或说明，不是可执行代码。
第 25 课默认 PRACTICE=true，不连接云端，也不跨 Stop 保存。第 28 课包含明确标注的故意错误实验。

01 · 给问题写一句能复现的描述
记录：操作步骤、预期结果、实际结果。
打开 Output，只先看最早与你的脚本相关的红色错误。
点击脚本来源或行号，定位到代码。

02 · 找不到对象：先看路径，不加等待
只在 Lesson28 实验副本里运行这段故意错误代码。
看到错误后记录行号，再改正 Cion 为 Coin。
重新 Play，确认 Coin 变成绿色。

文件：02-nil.luau
位置与用途：ServerScriptService > DebugLab · 故意错误的实验，修复后再保留

03 · 没报错，也可能算错了
替换 DebugLab，运行正确版本，看到 All boundary checks passed。
把函数里的 >= 临时改成 >，再运行，观察等于门槛的测试失败。
修复后再运行一次，别只看红线消失。

文件：03-boundary.luau
位置与用途：ServerScriptService > DebugLab · 修复后的边界测试

04 · 一次操作两次回应：检查连接位置
回看第 16 课，确认 Activated:Connect 在 render 外面。
给回调加入一次 print，观察一次点击到底执行几次。
不要用更长冷却掩盖重复连接；应修复重复的来源。

05 · 用断点暂停在关键一步
在边界测试函数的 return 行设断点。
运行并查看参数依次是 4、5、6。
继续执行直到测试完成，再清除断点。
若当前版本界面不同，按 Debugger、Breakpoints、Watch 等工具名寻找。

06 · 让 Output 和场景保持干净
删除临时的高频输出，保留有用的阶段或失败消息。
多跑几轮，观察是否不断新增同名对象。
写下三个已修复问题及对应验证步骤。

