UV4 命令行批处理调试(-d + 初始化文件)
batch_debug_scriptExecute a fixed sequence of Keil debug commands in command-line batch mode for repeatable smoke/regression testing without UVSOCK.
Instructions
用 Keil 官方命令行批处理通道跑一段固定的调试脚本:UV4 -d <工程> -j0 进调试并执行初始化文件里的命令序列。不依赖 UVSOCK(不需要 Keil 里开着 UVSOCK、也不怕连接被占/空闲断连),适合可重复的冒烟/回归(复位后采现场、跑几步看寄存器、抓一段打印),以及 UVSOCK 不可用时的降级通道。交互式排查请仍用 UVSOCK(enter_debug + keil_command)——那条通道可以中途改主意,本通道是「一条道跑到黑」。
commands:命令清单(数组,或换行分隔的字符串),一行一条。常用的有 g, main(运行到 main)、BS <符号>(下断点)、BL、G(跑到断点)、T/P/O(单步)、EVAL <表达式>、printf("%08X", _RDWORD(0x20000000))(无头读内存)。
四条真机实测的坑(工具已尽力兜住):
命令报错不改退出码(UV4 恒回 0):成败只认日志里的
*** error N, line M。本工具把退出码、逐条命令的 error、以及每条命令是否走到完成标记分开返回,ok 字段是综合判定结果。Go main/Go会挂死(官方语法是g, main,逗号不可省);DISPLAY/SAVE在-j0无头模式下也挂死。这两类写法会被静态检查提前告警,但仍请避开。无窗口焦点时单步退化为指令级(
T会进函数逐条指令走)。每轮 15~25s(含进调试 + Erase/Program/Verify),显著慢于 UVSOCK;timeout_s 默认 240。 实现细节:初始化文件与 trace 日志写在系统临时目录(ASCII 路径,真机实测中文路径会 UnicodeEncodeError),并把路径写入 .uvoptx 的
<tIfile>;前置备份、无论成败都还原,不会把你的工程改脏。返回 artifacts 里给出 init_file / trace_log / workdir 现场路径,log_tail 是日志尾部。高风险:会真正进调试并下载程序(Erase/Program/Verify)。 【参数】必填: commands;可选: project, timeout_s, visible 【调用示例】{"commands": [{"tool": "read_mem", "args": {"addr": "0x20000000", "n_bytes": 16}}]} 【风险】高——不可逆:会改写目标 Flash/内存,或关闭/重启用户的 Keil 实例。执行前确认目标与工程正确。
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | ||
| visible | No | ||
| commands | Yes | ||
| timeout_s | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |