# CLI-Anything LLDB：让 Agent 断点读取局部变量，定位真实原生程序错误

## 执行范围

已真实clang编译并运行坏/修复C程序；本机Apple LLDB在target create原生崩溃，CLI-Anything会话未成功读取局部变量，未伪造断点输出。

## 输入与目标

带调试符号且在边界值算错的原创C小程序

交付：断点轨迹、真实变量截图、源码补丁与运行输出

## 运行

在 reference 目录执行；先按文件 requirements.txt / package.json 或原生工具文档安装依赖。浏览器练习需 `npx playwright install chromium`；也可设置 `PLAYWRIGHT_EXECUTABLE_PATH` 为自己的 Chrome 路径。

```sh
python run.py
```

## 目录

- fixtures：作者原创输入，不包含用户真实资料。
- starter：读者待完成任务。
- reference：作者完成参考。
- results：作者实际运行所得或明确标注的待运行输入/预期合同。

## 七步

1. **编译原生负例**

以-g -O0编译1500克计费函数。真实坏程序输出450分，修复参考输出675分，不能仅把printf改成常量。

2. **建立隔离会话**

为CLI-Anything设置独立session-file，路径需足够短以免超过macOS Unix socket限制。不要共享其他调试器会话状态。

3. **创建真实目标**

执行target create并检查resolved target。本机此步在Apple LLDB原生崩溃，报告明确保留失败，不把No target当作有效调试结果。

4. **设置函数断点**

在可用LLDB环境对charge设置断点，确认断点有可解析位置。pending断点不说明程序实际停在目标函数。

5. **读取局部变量**

启动后应先读取grams，再单步至kilos赋值后查看整数除法损失。本文未拿到这份原生局部变量记录，读者须在自己的环境验证。

6. **修复金额算法**

参考实现按克计算分值并在输出边界取整，1500克得到675分。继续用1000克、0克和负值任务确认业务输入边界。

7. **核对证据等级**

交付源代码、真实进程输出和失败会话；执行成功的clang结果不能冒充LLDB成功。修好本机调试工具后再补原生locals记录。

## 来源

- https://raw.githubusercontent.com/HKUDS/CLI-Anything/main/lldb/agent-harness/LLDB.md


## 原生工具与边界补充

需要clang与可用LLDB；CLI-Anything官方lldb/agent-harness需由读者依README来源独立安装。本机Apple LLDB创建目标原生崩溃；脚本保留失败，不提供假的locals。LLDB_SESSION_FILE应使用较短的隔离路径。
