在线调试是云函数为了解决用户在本地搭建调试环境简单,云上环境不便于定位等问题推出的性能。
云上的各种服务,在本地无奈齐全模仿,程序员大都遇到过本地和近程环境运行后果不统一的情景,追究起来费时费力,不仅效率低下,也造成十分郁闷的工作体验。
所以,是否间接在近程环境中实现全副的开发流程,是晋升开发体验的最间接伎俩,然而在其余问题都解决后,近程调试性能是最初的一公里。
本篇文章将以一段内存透露的代码为例,给大家展现如何应用云函数在线调试功能定位和解决问题。Node10 及以上版本的 runtime,应用 Chrome 浏览器关上云函数控制台,在函数代码页即可看到在线调试的入口。
开启调试模式
应用 Chrome 浏览器关上函数代码编辑页,能够看到在【近程调试】页。为保障调试的体验,开启调试模式将批改函数的局部配置,包含函数进入单实例模式、函数超时工夫批改为 900 秒等。开启前请务必确认这些调整。
待加载实现后,页面将主动展现入口文件。
找不到须要的文件?
应用快捷键 Cmd + P(Mac)或 Ctrl + P(Windows)能够关上所须要的文件。但大家可能会发现,刚开启调试模式时,关上文件的列表中找不到所须要的文件。
这是因为对于动静脚本语言来说,调试器不会加载所有的内容,只会加载执行过的文件。咱们先点击测试,让函数运行一次。在运行一次后,咱们就能够关上所须要的文件了。
设置断点
在代码前点击即可设置断点,在右上角的工具中能够进行继续执行、跨步执行、单步执行等操作,也能够灵便地启动或禁用断点。
内存透露排查 – 内存快照
这部分介绍如何应用内存快照性能排查内存透露的问题。内存透露的排查办法大抵为:找准内存透露的机会,在透露的前后对内存进行快照,通过比照快照的内容判断内存透露的问题点。
首先,咱们将调试的窗口切换到 Memory 页面,点击左上方的实心圆形按钮捕获内存快照。
这样,咱们就有了运行前的内存快照。当初咱们执行存在内存透露的代码。这行代码有一个从未清理的全局缓存,随着调用的减少,越来越占内存。
随后,咱们进行第二次内存快照,关上比照页面,通过对 Delta 值的剖析,能够发现 concatenated string 这个局部减少了很多,很有可能有问题。
关上当前,便能够发现内存中多存储了很多“recording time”的数据。
这些重复性的数据也就意味着代码中呈现了内存透露,在代码中找到相干内容,进行调整,解决内存透露的问题。
除了云函数的控制台,也能够应用 Serverless Framework Dev 模式 开启在线调试的性能。