真正支持断点调试云函数的vscode插件仅有三类:腾讯云cloudbase toolkit与serverless toolkit、华为appgallery connect toolkit;其中cloudbase toolkit需配合cloudbase cli启动并attach至--inspect端口,严格依赖launch.json中"request": "attach"及正确的port/address/remoteroot配置,且event结构须严格匹配云平台规范。

VSCode 插件市场里能真正支持断点调试云函数的插件,只有两类可用:腾讯云的 Tencent CloudBase Toolkit 和 Tencent Serverless Toolkit;华为云的 AppGallery Connect Toolkit(仅限 AGC 云函数)。其他名称含“cloud”“function”“serverless”的插件,多数只提供部署/日志查看功能,不支持 attach 调试。
CloudBase Toolkit 调试必须配 cloudbase CLI 启动
插件本身不启动调试进程,cloudbase functions:dev 才是实际载体。VSCode 只负责 attach 到它暴露的 --inspect 端口。
- 必须全局安装
@cloudbase/cli(不是已废弃的tcb-cli) - 项目根目录执行
cloudbase functions:dev --function-name myFunc,默认监听0.0.0.0:9229 - 插件 UI 上点击“调试”按钮,本质是触发 VSCode 的 attach 配置——所以
launch.json里"request": "attach"必须存在且生效 - 若插件没反应,先检查 CLI 是否真在运行:
netstat -ano | findstr :9229(Windows)或lsof -i :9229(macOS/Linux)
launch.json 的 port/address 必须和 CLI 实际绑定一致
常见错误是 VSCode 死等 “waiting for connection”,根本原因是端口或地址不匹配。
-
cloudbase functions:dev默认绑定0.0.0.0:9229,但 VSCode 的 Node debugger 默认只连localhost:9229 - 如果本地防火墙/网络策略限制了
0.0.0.0,就得显式加参数:cloudbase functions:dev --inspect=127.0.0.1:9230,然后launch.json里同步改"port": 9230和"address": "127.0.0.1" -
"remoteRoot": "/"是关键:cloudbase 把代码挂载进容器根路径,不是按工作区映射的,设成"${workspaceFolder}"会导致源码定位失败
event.json 格式错一个字段,函数就直接报错退出
VSCode 调试时传入的 event 不是裸 JSON,而是严格模拟云平台注入结构。腾讯云 HTTP 触发器的 event 至少要包含 requestContext、headers、body 三层嵌套,且 body 是字符串(即使内容是 JSON,也得 JSON.stringify() 过)。
- 别手写 event —— 用插件右键函数生成的
event.json模板,或从云端真实日志里复制一段 - HTTP 函数注意
isBase64Encoded字段:腾讯云默认为false,阿里云 FC 默认为true,混用会解码失败 - 数据库触发器、定时触发器的 event 结构完全不同,不能复用 HTTP 模板
最易被忽略的是 Node.js runtime 版本一致性:插件显示“调试启动成功”,但 handler 里调用 fetch 报错,大概率是本地 node -v 和云端 runtime(如 nodejs18.x)不一致。务必在 VSCode 集成终端里执行 node -v 确认,而不是只看系统终端。











