前言
我總是調侃好多 nodejs 開發都不會多進程調試,這其中就包括了我。
直到有一天,我不得不使用它來解決一些問題,作為一個懶人,我喜歡用簡單的辦法,所以這可能是最簡單的 Nodejs 調試方法,話不多說進入正題
console.log()
單進程的調試,如果場景不復雜、比較好預判,可以直接打印到控制臺
// 添加參數 --debug-brk 可以在第一行斷點 // node --inspect --debug-brk index.js node --inspect index.js
nodejs 在 v6.3.0 版本之后支持了 node --inspect index.js 這種調試方式,可以打開一個 chrome 頁面,用前端熟悉的方式進行斷點調試。
Debugger listening on port 5863. Warning: This is an experimental feature and could change at any time. To start debugging, open the following URL in Chrome: chrome-devtools://devtools/remote/serve_file/@60cd6e859b9f557d2312f5bf532f6aec5f284980/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:5863/7fd57fb3-86fa-4519-8621-39147428b15d
像這樣,會有一個 chrome-devtools 協議的地址,復制到 chrome 中就可以開啟調試
多進程調試假設我有一個這樣的多進程 Nodejs 服務
if (cluster.isMaster) { for (var i = 0; i < cpuCount; i++) { cluster.fork(); } const agentWorker = cluster.fork({ "AGENT_WORKER": true }); }
注意對比,通過cluster.setupMaster可以設置 master 進程 fork work 進程時的參數配置
if (cluster.isMaster) { if (debug) { // 在 fork 進程之前添加調試參數,--debug-brk 指代碼在執行第一行時進行斷點 cluster.setupMaster({ execArgv: ["--inspect", "--debug-brk"] }); } for (var i = 0; i < cpuCount; i++) { cluster.fork(); } const agentWorker = cluster.fork({ "AGENT_WORKER": true }); }
像單進程一樣,不過每個進程都會有一個調試 url,但我們依然可以直接在 chrome 里面進行多進程調試
如果你還不會,快去試試吧
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/87192.html
摘要:當你使用的活動監視器你會發現,實際的進程數為菜鳥是因為線程池的原因嗎老鳥不錯嘛,還知道線程池呢但非也非也。菜鳥竟然不是線程池老鳥你忽視了集成了引擎。啟動后會創建實例,而實例是多線程的。 老鳥:伸著懶腰,看著窗外明媚的陽光,喝一口清茶,心情大美。一天的好心情莫過于此。老鳥:菜鳥,你這消失了大半個月,忙什么呢?菜鳥:聽說node最近很火,這不趁著年輕,多儲存點知識儲備呢!老鳥:那你說說你對...
摘要:安裝及線上環境配置安裝官方安裝說明地址執行命令至此,安裝完成版本查看安裝官方文檔地址首次安裝執行命令以后創建項目只需在你需要的路徑下執行開發測試環境下直接執行以下命令啟動項目后面加上可以在修改現有文件后自動進行重啟瀏覽器輸入即可 centos+node.js+nest.js+caddy+pm2安裝及線上環境配置 node.js安裝 官方安裝說明地址 https://github.com...
摘要:第三步在打開在地址欄輸入并回車后就會看到以下頁面了點擊上面的鏈接跳轉到調試頁面你會看到一個調試當前代碼的彈窗。更好的體驗是,當你的重啟后,這個調試窗口會重新連接。從上圖,你會看到一堆經常用到的調試工具。 事實上chrome devtools在2016年5月就已經支持Nodejs的調試了,具體可以觀看英文原版Google I/O上的視頻 第一步:下載和安裝最新版本的Nodejs(要求6....
摘要:如何避免內存泄露內存泄漏很常見,特別是前端去寫后端程序,閉包運用不當,循環引用等都會導致內存泄漏。有的時候很難避免一些可能產生內存泄漏的問題,可以利用每次調用都在一個沙箱環境下調用,用完回收調。 某一天用戶反饋打開的頁面白屏幕,怎么定位到產生錯誤的原因呢?日常某次發布怎么確定發布會沒有引入bug呢?此時捕獲到代碼運行的bug并上報是多么的重要。 既然捕獲錯誤并上報是日常開發中不可缺少的...
摘要:如何避免內存泄露內存泄漏很常見,特別是前端去寫后端程序,閉包運用不當,循環引用等都會導致內存泄漏。有的時候很難避免一些可能產生內存泄漏的問題,可以利用每次調用都在一個沙箱環境下調用,用完回收調。 某一天用戶反饋打開的頁面白屏幕,怎么定位到產生錯誤的原因呢?日常某次發布怎么確定發布會沒有引入bug呢?此時捕獲到代碼運行的bug并上報是多么的重要。 既然捕獲錯誤并上報是日常開發中不可缺少的...
閱讀 2651·2021-11-22 15:24
閱讀 1384·2021-11-17 09:38
閱讀 2759·2021-10-09 09:57
閱讀 1210·2019-08-30 15:44
閱讀 2449·2019-08-30 14:00
閱讀 3550·2019-08-30 11:26
閱讀 2942·2019-08-29 16:28
閱讀 757·2019-08-29 13:56