SuperAPI AI 工具集

matlab-debug-code

测试与质量

查看项目

更新于 10-16 00:21

技能介绍

用途:该技能用于调查和调试 MATLAB 代码,借助 MCP 工具连接实时 MATLAB 会话,主动检查代码运行状态,而不是仅凭阅读源码猜测。适用于用户遇到 MATLAB 报错或结果异常、需要设置断点或检查变量状态、追踪函数输出错误、出现意外 NaN/Inf、MCP 工具返回运行时/语法/未定义函数或变量错误、测试失败,以及用户询问代码为何不工作或提供堆栈信息时。不适用于无运行期问题的代码质量审查、性能剖析、编写测试,或单纯了解 MATLAB API。

主要能力:提供静态分析与运行期调试两条路径。静态分析使用 Read 工具和 check_matlab_code,适合语法错误、未使用变量、明显逻辑错误。运行期调试用于错误依赖实际数据值、类型或维度,输出错误但代码看似正确,或需要了解执行到某点时变量内容的情况。可用工具包括 mcp__matlab__run_matlab_file(运行 .m 脚本,优先用于执行用户脚本和验证修复)、mcp__matlab__evaluate_matlab_code(快速诊断:检查变量、求值表达式、测试小片段)、mcp__matlab__check_matlab_code(静态分析)、mcp__matlab__run_matlab_test_file(运行测试文件)、mcp__matlab__detect_matlab_toolboxes(列出已安装工具箱,用于排查未定义函数是否因缺少工具箱)。

使用方式:先判断目标是调试、理解、调查还是探索。用 evaluate_matlab_code 运行诊断命令,用 Read 工具读取磁盘上的 .m 文件,用 which 定位文件、which -all 检查遮蔽。预览大数据用 varName(1:min(5,end),:) 或 head(T)。运行期调试前先检查桌面模式:desktop('-inuse'),返回 true 为桌面模式,可用 dbstop if error、dbstop if caught error、dbstop if warning、dbstop if naninf、dbstop in file at line 设置断点,运行后 MATLAB 暂停,用 dbstack 查看调用栈,whos 查看作用域变量,dbup/dbdown 切换栈帧,dbcont 继续,dbquit 退出,dbclear all 清除断点。返回 false 为无桌面模式,暂停型断点会导致 MCP 求值无限挂起,应改用 try-catch 包装捕获错误并检查状态,或用 tracer 条件断点(条件恒为 false 但打印值)探测变量,或先运行再检查工作区。

限制与注意事项:dbstep 通过 MCP 不可靠,每次 evaluate_matlab_code 是独立命令,步进状态可能不保留。不要用 type 或 dbtype 读源码,应使用 Read 工具。调试结束务必 dbclear all,避免遗留断点导致后续意外暂停。dbup/dbdown 作用域按调用生效,需与变量检查放在同一次 evaluate_matlab_code 调用中。切勿运行 restoredefaultpath,否则会移除 MCP 服务器自身包,导致 mcpEval 找不到,只能重启 MATLAB 恢复。该技能不需要任何工具箱,仅使用基础 MATLAB 调试命令。常见错误排查涵盖未定义函数或变量、索引超界、输入参数数量不符、矩阵维度不一致、下标非正整数或逻辑值、点索引不支持、赋值失败、内存不足、递归超限、NaN 传播等。原则是使用工具实际运行、有选择地检查、先看尺寸再取数据、聚焦用户代码、先读源码再修复、尽量验证修复。