在線調試是雲函數爲了解決用戶在本地搭建調試環境複雜,雲上環境不便於定位等問題推出的功能。程序員
雲上的各類服務,在本地沒法徹底模擬,程序員大都遇到過本地和遠程環境運行結果不一致的情形,追查起來費時費力,不只效率低下,也形成很是鬱悶的工做體驗。瀏覽器
因此,可否直接在遠程環境中完成所有的開發流程,是提高開發體驗的最直接手段,然而在其餘問題都解決後,遠程調試功能是最後的一千米。緩存
本篇文章將以一段內存泄漏的代碼爲例,給你們展現如何使用雲函數在線調試功能定位和解決問題。Node10 及以上版本的 runtime,使用 Chrome 瀏覽器打開雲函數控制檯,在函數代碼頁便可看到在線調試的入口。less
使用Chrome瀏覽器打開函數代碼編輯頁,能夠看到在【遠程調試】頁。爲保障調試的體驗,開啓調試模式將修改函數的部分配置,包括函數進入單實例模式、函數超時時間修改成900秒等。開啓前請務必確認這些調整。函數
待加載完成後,頁面將自動展現入口文件。工具
使用快捷鍵 Cmd + P(Mac)或 Ctrl + P(Windows)能夠打開所須要的文件。但你們可能會發現,剛開啓調試模式時,打開文件的列表中找不到所須要的文件。
這是由於對於動態腳本語言來講,調試器不會加載全部的內容,只會加載執行過的文件。咱們先點擊測試,讓函數運行一次。在運行一次後,咱們就能夠打開所須要的文件了。測試
在代碼前點擊便可設置斷點,在右上角的工具中能夠進行繼續執行、跨步執行、單步執行等操做,也能夠靈活地啓動或禁用斷點。3d
這部分介紹如何使用內存快照功能排查內存泄漏的問題。內存泄漏的排查方法大體爲:找準內存泄漏的時機,在泄漏的先後對內存進行快照,經過對比快照的內容判斷內存泄漏的問題點。調試
首先,咱們將調試的窗口切換到 Memory 頁面,點擊左上方的實心圓形按鈕捕捉內存快照。server
這樣,咱們就有了運行前的內存快照。如今咱們執行存在內存泄漏的代碼。這行代碼有一個從未清理的全局緩存,隨着調用的增長,愈來愈佔內存。
隨後,咱們進行第二次內存快照,打開對比頁面,經過對Delta值的分析,能夠發現 concatenated string 這個部分增長了不少,頗有可能有問題。
打開之後,即可以發現內存中多存儲了不少「recording time」的數據。
這些重複性的數據也就意味着代碼中出現了內存泄漏,在代碼中找到相關內容,進行調整,解決內存泄漏的問題。
除了雲函數的控制檯,也可使用 Serverless Framework Dev 模式開啓在線調試的功能。
當即體驗騰訊雲 Serverless Demo,領取 Serverless 新用戶禮包 👉 serverless/start
歡迎訪問:Serverless 中文網!