真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

一些調試Node.js程序的快捷方法

在調試程序時總是會遇到各種挑戰(zhàn)。 Node.js 的異步工作流為這一艱巨的過程增加了額外的復雜性。盡管 V8 引擎為了方便訪問異步棧跟蹤進行了一些更新,但是在很多數(shù)情況下,我們只會在程序主線程上遇到錯誤,這使得調試有些困難。同樣,當我們的 Node.js 程序崩潰時,通常需要依靠一些復雜的 CLI 工具來分析核心轉儲。

雙江網站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網頁設計、網站建設、微信開發(fā)、APP開發(fā)、響應式網站建設等網站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)建站2013年開創(chuàng)至今到現(xiàn)在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選創(chuàng)新互聯(lián)建站。

在本文中,我們將介紹一些調試 Node.js 程序的簡便方法?!疽曨l教程推薦:node js教程 】

日志記錄

當然,沒有哪一個開發(fā)工具箱是不提供日志的。我們傾向于在本地開發(fā)中的整個代碼中放置 console.log語句,但這并不是生產中真正可擴展的策略。你可能需要進行一些過濾和清理,或者實施一致的日志記錄策略,以便從中識別出重要的信息。

要實施適當?shù)拿嫦蛉罩镜恼{試策略,可以用 Pino或 Winston 之類的日志記錄工具。這些將允許你設置日志級別(INFOWARN、ERROR),它們允許你在本地打印詳細的日志消息,同時在生產環(huán)境下僅打印嚴重的日志消息。你還可以將這些日志流式傳輸?shù)骄酆掀骰蚱渌胤?,例?LogStash,Papertrail 甚至 Slack。

使用 Node Inspect 和 Chrome DevTools

日志記錄只能使我們了解程序為何無法按預期運行。對于復雜的調試,我們將希望使用斷點來檢查代碼在執(zhí)行時的行為。

為此,可以使用 Node Inspect。 Node Inspect 是 Node.js 附帶的調試工具。它實際上只是程序的 Chrome DevTools 的實現(xiàn),可讓你添加斷點、控制分步執(zhí)行、查看變量、并遵循調用堆棧。

有兩種方法啟動 Node Inspect,但最簡單的方法可能就是使用 --inspect-brk標志來調用 Node.js 應用程序:

$ node --inspect-brk $your_script_name

啟動程序后,前往 Chrome 瀏覽器中的 chrome://inspectURL 進入 Chrome DevTools。借助 Chrome DevTools,你可以擁有在瀏覽器中調試 JavaScript 時的所有功能。最有用的功能是檢查內存的能力。你可以獲取堆快照并配置內存使用情況,以了解內存的分配方式以及可能的方式及內存泄漏的情況。

使用受支持的IDE

許多現(xiàn)代 IDE 不但能夠以某種方式啟動程序,而且還支持調試 Node 程序。除了具有 Chrome DevTools 中的許多功能外,它們還具有自己的功能,例如可以創(chuàng)建日志點并允許你創(chuàng)建多個調試配置文件。可以通過查閱有關檢查器客戶端的 Node.js 指南來獲取有關這些 IDE 的更多信息。

使用NDB

另一種選擇是安裝 ndb,它是 Node.js 的獨立調試器,和瀏覽器中的 DevTools 類似,就像一個隔離的本地調試器一樣。它還有一些在 DevTools 中不可用的額外功能。它支持本地編輯,這意味著你可以修改代碼并得到調試器平臺直接支持的更新邏輯。這對于進行快速迭代非常有用。w

事后調試

假設你的程序由于災難性錯誤(例如內存訪問錯誤)而崩潰。這些可能很少見,但確實會發(fā)生,特別是如果你的應用程序依賴于本機代碼。

要調查這類問題,可以使用 llnode。當程序崩潰時,llnode可以通過將 JavaScript 堆??蚣芎蛯ο笥成涞?C/C++ 端的對象來檢查它們。為了使用它,你首先需要程序的核心轉儲。為此你需要使用 process.abort而不是process.exit來關閉代碼中的進程。當你使用 process.abort時,Node 進程在退出時會生成一個核心轉儲文件。

為了更好地理解 llnode可以提供的功能,這個視頻演示了其一些功能。

有用的 Node 模塊

除了上述所有以外,還建議用第三方軟件包做進一步調試。

debug

第一個被簡單地稱為 debug。使用 debug,你可以基于函數(shù)名或整個模塊為日志消息分配特定的命名空間。然后可以通過特定的環(huán)境變量選擇將哪些消息打印到控制臺。

例如,這是一個 Node.js 服務器,它正在記錄來自整個程序和中間件棧的幾條消息,例如 sequelize,express:applicationexpress:router

如果我們將 DEBUG 環(huán)境變量設置為 express:router并啟動相同的程序,則僅顯示標記為 express:router的消息:

通過以這種方式過濾消息,可以深入研究程序單個部分的行為方式,而無需大幅度更改代碼的日志記錄。

trace 與 clarify

trace 和 clarify 兩個模塊最好在一起配合使用。

trace通過提供有關被調用的異步方法的更多詳細信息來擴展你的異步棧跟蹤,這是 Node.js 默認不提供的路線圖。 clarify通過從特定于 Node.js 內部的棧跟蹤中刪除所有信息來提供幫助。這使你可以專注于僅針對程序的函數(shù)調用。

這些模塊都不建議在生產環(huán)境中運行!僅在本地開發(fā)環(huán)境中進行調試時才應啟用它們。

更多編程相關知識,可訪問:編程教學?。?
當前文章:一些調試Node.js程序的快捷方法
文章地址:http://weahome.cn/article/chohcg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部