最佳实践

云端调试

最近更新时间:2020-06-12 23:49:07

操作场景

VS Code 插件支持 Node.js 10.15 及以上版本的 Node.js 运行环境的函数进行在线调试。本文介绍通过在线调试功能,实现在本地的开发环境中查看远端的代码执行过程,并进行断点设置、单步跟踪及查看堆栈等能力。

前提条件

目前支持运行环境为 Node.js 10.15 的函数开启调试能力。

使用须知及注意事项

当前云函数的云端调试能力处于 Beta 阶段,欢迎试用并向我们反馈试用过程中遇到的问题或建议。

在使用云函数的远程调试功能时,需要了解如下信息及注意点:

  • 远程调试使用了云函数的一个实际运行的并发实例来进行调试。
  • 由于触发事件的随机性,如果有多个实例存在的情况下,触发事件可能随机的落到某个实例上,因此不是任意请求均能命中调试并发实例并可以开始调试。
  • 调试断点暂停运行时:
    • 长时间未运行且未返回的情况下,可能会导致触发端报错,例如 API 网关提示超时。
    • 实例仍然处于计时状态,并会在此次调试完成时,继续执行直到函数执行完成。整个过程记录耗费的总时长作为此次函数的运行时长。
  • 从触发并发实例运行,到最终完成调试,单次执行完成的最长时间为900秒。即在调试时如果中断执行900秒后,将会强制终止此次执行,按函数运行时长900秒并超时进行统计和计量。
  • 当前版本的调试能力,会使得云函数超时配置为900秒,在正常退出调试时将会重新设置超时为正常值。如果调试命令异常退出或强行终止,会导致云函数超时未能设置为正常值,此时可以通过再次部署(命令行)或手工编辑(控制台)的方式修改云函数的超时配置。详情请参见 创建及更新函数

操作步骤

开启远程调试

  1. 单击左侧导航栏中的 ,打开已安装好的 Tencent Serverless Toolkit。
  2. 选择“云端函数”列表中需远程调试函数右侧的 ,开启当前函数的远程调试。如下图所示:

    开启远程调试后,VS Code 将切换进入 debugger 模式,并将自动依据以下调试启动配置来启动调试:
    {
     "version": "0.2.0",
     "configurations": [
         {
             "name": "SCF Remote Debugger for Node10+ - node10debug",
             "type": "node",
             "request": "attach",
             "port": 9222,
             "localRoot": "${workspaceFolder}/node10debug/src",
             "remoteRoot": "/var/user"
         }
     ]
    }
    说明:

    • node10debug 为当前示例的函数名。
    • localRoot 将使用当前启动调试函数的具体代码目录,用于映射远端函数代码和本地函数代码。

进行远程调试

  1. 远程调试启动后,在本地对应的代码上增加断点,用于中断函数运行并进行后续的调试操作。
  2. 触发函数运行,可通过以下方式:
    • 选择“云端函数”列表右侧的 ,向云端函数发送触发事件。
    • 通过其他方式,例如带有 API 网关触发器的函数可通过访问 URL 触发函数运行。
  3. 在触发运行到断点后,本地调试窗口将显示目前中断位置。如下图所示:
    通过调试的控制按钮,可以进行调试过程的 Continue、Step Over、Step Out、Step Into 等操作。

    您还可以通过调试窗口的其他能力,进行查看当前的变量具体值、增加自身期望监控的变量及当前的调用堆栈等操作。例如,可通过 Loaded Scripts 窗口,直接开启远端代码查看及设置断点。如下图所示:

关闭远程调试

在关闭 VSCode debugger 时,将会自动关闭远程调试功能。

目录