InfoQ Geekathon 大模型技术应用创新大赛 了解详情
写点什么

再见,本地环境!腾讯云全球首发:Serverless 在线远程调试

  • 2021-04-09
  • 本文字数:1132 字

    阅读完需:约 4 分钟

再见,本地环境!腾讯云全球首发:Serverless 在线远程调试

在线调试是云函数为了解决用户在本地搭建调试环境复杂,云上环境不便于定位等问题推出的功能。

云上的各种服务,在本地无法完全模拟,程序员大都遇到过本地和远程环境运行结果不一致的情形,追查起来费时费力,不仅效率低下,也造成非常郁闷的工作体验。


所以,能否直接在远程环境中完成全部的开发流程,是提升开发体验的最直接手段,然而在其他问题都解决后,远程调试功能是最后的一公里。


本篇文章将以一段内存泄漏的代码为例,给大家展示如何使用云函数在线调试功能定位和解决问题。Node10 及以上版本的 runtime,使用 Chrome 浏览器打开云函数控制台,在函数代码页即可看到在线调试的入口。


开启调试模式


使用 Chrome 浏览器打开函数代码编辑页,可以看到在【远程调试】页。为保障调试的体验,开启调试模式将修改函数的部分配置,包括函数进入单实例模式、函数超时时间修改为 900 秒等。开启前请务必确认这些调整。



待加载完成后,页面将自动展示入口文件。


找不到需要的文件?


使用快捷键 Cmd + P(Mac)或 Ctrl + P(Windows)可以打开所需要的文件。但大家可能会发现,刚开启调试模式时,打开文件的列表中找不到所需要的文件。这是因为对于动态脚本语言来说,调试器不会加载所有的内容,只会加载执行过的文件。我们先点击测试,让函数运行一次。在运行一次后,我们就可以打开所需要的文件了。



设置断点


在代码前点击即可设置断点,在右上角的工具中可以进行继续执行、跨步执行、单步执行等操作,也可以灵活地启动或禁用断点。



内存泄漏排查 - 内存快照


这部分介绍如何使用内存快照功能排查内存泄漏的问题。内存泄漏的排查方法大致为:找准内存泄漏的时机,在泄漏的前后对内存进行快照,通过对比快照的内容判断内存泄漏的问题点。


首先,我们将调试的窗口切换到 Memory 页面,点击左上方的实心圆形按钮捕捉内存快照。



这样,我们就有了运行前的内存快照。现在我们执行存在内存泄漏的代码。这行代码有一个从未清理的全局缓存,随着调用的增加,越来越占内存。



随后,我们进行第二次内存快照,打开对比页面,通过对 Delta 值的分析,可以发现 concatenated string 这个部分增加了很多,很有可能有问题。



打开以后,便可以发现内存中多存储了很多“recording time”的数据。



这些重复性的数据也就意味着代码中出现了内存泄漏,在代码中找到相关内容,进行调整,解决内存泄漏的问题。


除了云函数的控制台,也可以使用 Serverless Framework Dev 模式开启在线调试的功能。



头图:Unsplash

作者:松鹅

原文:https://mp.weixin.qq.com/s/QwF2ifJvZYM029LJXL_vVQ

原文:再见,本地环境!腾讯云全球首发:Serverless 在线远程调试

来源:TencentServerless - 微信公众号 [ID:ServerlessGo]

转载:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2021-04-09 15:062724

评论

发布
暂无评论
发现更多内容

软件测试 | 测试开发 | 被测项目需求你理解到位了么?

测吧(北京)科技有限公司

测试

面试官:能用JavaScript手写一个bind函数吗

helloworld1024fd

JavaScript

软件测试 | 测试开发 | 软件测试入门必会-流程管理平台

测吧(北京)科技有限公司

测试

【译】日志:每个软件工程师都应该了解实时数据的统一抽象【二】

Rae

kafka 架构 分布式 日志 原理

软件测试 | 测试开发 | 一文带你了解测试流程的体系

测吧(北京)科技有限公司

测试

四个典型的车联网案例,给你数据架构升级思路

TDengine

tdengine 车联网 物联网

k8s Tidb 实践-运维篇

TiDB 社区干货传送门

数据库前沿趋势

【“玩物立志”-scratch少儿编程】亲手实现小猫走迷宫小游戏:其实挺简单

清风莫追

游戏 scratch 10月月更

软件测试 | 测试开发 | 做为测试,那些必须掌握的测试技术体系

测吧(北京)科技有限公司

测试

大咖说·图书分享|深入集群:大型数据中心资源调度与管理

大咖说

编程 数据中心

开发者有话说|27岁暮年老人一生

百里丶落云

k8s Tidb实践-部署篇

TiDB 社区干货传送门

数据库前沿趋势

运维成本降低 50%,丽迅物流是如何应对大规模容器镜像管理挑战的

阿里巴巴云原生

阿里云 容器 云原生 镜像

C语言太细了

清风莫追

c 10月月更

软件测试 | 测试开发 | 测试面试 | 某 BAT 大厂测试开发面试真题与重点解析

测吧(北京)科技有限公司

测试

2022-9-30

留白的艺术

HummerRisk 云原生安全平台

HummerCloud

云计算 云原生 云安全

Go runtime:带你了解Go语言的GMP模型与goroutine调度

董哥的黑板报

Go 线程 操作系统 协程 runtime

嵌入式RTOS的 任务栈 和 系统栈

矜辰所致

嵌入式 9月月更 RTOS

软件测试 | 测试开发 | 测试平台开发-前端开发之Vue.js 框架(一)

测吧(北京)科技有限公司

测试

从React源码角度看useCallback,useMemo,useContext

goClient1992

React

深度分析React源码中的合成事件

goClient1992

React

软件测试 | 测试开发 | 测试平台开发-前端开发之Vue.js 框架的使用(二)

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 被测系统架构与数据流分析

测吧(北京)科技有限公司

测试

实现Promise的原型方法--前端面试能力提升

helloworld1024fd

JavaScript

百草味上线“本味甄果”系列罐装坚果 打造高品质坚果新标准

E科讯

边缘计算落地提速 天翼云Serverless边缘容器加速深耕市场

Geek_2d6073

软件测试 | 测试开发 | 软件项目管理与跨部门沟通协作

测吧(北京)科技有限公司

测试

【导航】FreeRTOS学习专栏目录 【快速跳转】

矜辰所致

目录 FreeRTOS 9月月更

python安装包报错Microsoft Visual C++ 14.0 or greater is required

阿呆

pip

TDengine3.0流式计算引擎语法规则介绍

TDengine

数据库 tdengine 企业号九月金秋榜

  • 扫码添加小助手
    领取最新资料包
再见,本地环境!腾讯云全球首发:Serverless 在线远程调试_语言 & 开发_TencentServerless_InfoQ精选文章