在線除錯是云函式為了解決用戶在本地搭建除錯環境復雜,云上環境不便于定位等問題推出的功能,
云上的各種服務,在本地無法完全模擬,程式員大都遇到過本地和遠程環境運行結果不一致的情形,追查起來費時費力,不僅效率低下,也造成非常郁悶的作業體驗,
所以,能否直接在遠程環境中完成全部的開發流程,是提升開發體驗的最直接手段,然而在其他問題都解決后,遠程除錯功能是最后的一公里,
本篇文章將以一段記憶體泄漏的代碼為例,給大家展示如何使用云函式在線除錯功能定位和解決問題,Node10 及以上版本的 runtime,使用 Chrome 瀏覽器打開云函式控制臺,在函式代碼頁即可看到在線除錯的入口,
開啟除錯模式
使用Chrome瀏覽器打開函式代碼編輯頁,可以看到在【遠程除錯】頁,為保障除錯的體驗,開啟除錯模式將修改函式的部分配置,包括函式進入單實體模式、函式超時時間修改為900秒等,開啟前請務必確認這些調整,

待加載完成后,頁面將自動展示入口檔案,
找不到需要的檔案?
使用快捷鍵 Cmd + P(Mac)或 Ctrl + P(Windows)可以打開所需要的檔案,但大家可能會發現,剛開啟除錯模式時,打開檔案的串列中找不到所需要的檔案,
這是因為對于動態腳本語言來說,除錯器不會加載所有的內容,只會加載執行過的檔案,我們先點擊測驗,讓函式運行一次,在運行一次后,我們就可以打開所需要的檔案了,

設定斷點
在代碼前點擊即可設定斷點,在右上角的工具中可以進行繼續執行、跨步執行、單步執行等操作,也可以靈活地啟動或禁用斷點,

記憶體泄漏排查 - 記憶體快照
這部分介紹如何使用記憶體快照功能排查記憶體泄漏的問題,記憶體泄漏的排查方法大致為:找準記憶體泄漏的時機,在泄漏的前后對記憶體進行快照,通過對比快照的內容判斷記憶體泄漏的問題點,
首先,我們將除錯的視窗切換到 Memory 頁面,點擊左上方的實心圓形按鈕捕捉記憶體快照,

這樣,我們就有了運行前的記憶體快照,現在我們執行存在記憶體泄漏的代碼,這行代碼有一個從未清理的全域快取,隨著呼叫的增加,越來越占記憶體,

隨后,我們進行第二次記憶體快照,打開對比頁面,通過對Delta值的分析,可以發現 concatenated string 這個部分增加了很多,很有可能有問題,

打開以后,便可以發現記憶體中多存盤了很多“recording time”的資料,

這些重復性的資料也就意味著代碼中出現了記憶體泄漏,在代碼中找到相關內容,進行調整,解決記憶體泄漏的問題,
除了云函式的控制臺,也可以使用 Serverless Framework Dev 模式開啟在線除錯的功能,
One More Thing
立即體驗騰訊云 Serverless Demo,領取 Serverless 新用戶禮包 ?? serverless/start
歡迎訪問:Serverless 中文網!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/253430.html
標籤:其他
上一篇:2021寒假每日一題《火星人》
下一篇:計算虛擬化
