前言
我總是調(diào)侃好多 nodejs 開發(fā)都不會多進(jìn)程調(diào)試,這其中就包括了我。
直到有一天,我不得不使用它來解決一些問題,作為一個(gè)懶人,我喜歡用簡單的辦法,所以這可能是最簡單的 Nodejs 調(diào)試方法,話不多說進(jìn)入正題
console.log()
單進(jìn)程的調(diào)試,如果場景不復(fù)雜、比較好預(yù)判,可以直接打印到控制臺
// 添加參數(shù) --debug-brk 可以在第一行斷點(diǎn) // node --inspect --debug-brk index.js node --inspect index.js
nodejs 在 v6.3.0 版本之后支持了 node --inspect index.js 這種調(diào)試方式,可以打開一個(gè) chrome 頁面,用前端熟悉的方式進(jìn)行斷點(diǎn)調(diào)試。
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
像這樣,會有一個(gè) chrome-devtools 協(xié)議的地址,復(fù)制到 chrome 中就可以開啟調(diào)試
多進(jìn)程調(diào)試假設(shè)我有一個(gè)這樣的多進(jìn)程 Nodejs 服務(wù)
if (cluster.isMaster) { for (var i = 0; i < cpuCount; i++) { cluster.fork(); } const agentWorker = cluster.fork({ "AGENT_WORKER": true }); }
注意對比,通過cluster.setupMaster可以設(shè)置 master 進(jìn)程 fork work 進(jìn)程時(shí)的參數(shù)配置
if (cluster.isMaster) { if (debug) { // 在 fork 進(jìn)程之前添加調(diào)試參數(shù),--debug-brk 指代碼在執(zhí)行第一行時(shí)進(jìn)行斷點(diǎn) cluster.setupMaster({ execArgv: ["--inspect", "--debug-brk"] }); } for (var i = 0; i < cpuCount; i++) { cluster.fork(); } const agentWorker = cluster.fork({ "AGENT_WORKER": true }); }
像單進(jìn)程一樣,不過每個(gè)進(jìn)程都會有一個(gè)調(diào)試 url,但我們依然可以直接在 chrome 里面進(jìn)行多進(jìn)程調(diào)試
如果你還不會,快去試試吧
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/87192.html
摘要:當(dāng)你使用的活動監(jiān)視器你會發(fā)現(xiàn),實(shí)際的進(jìn)程數(shù)為菜鳥是因?yàn)榫€程池的原因嗎老鳥不錯(cuò)嘛,還知道線程池呢但非也非也。菜鳥竟然不是線程池老鳥你忽視了集成了引擎。啟動后會創(chuàng)建實(shí)例,而實(shí)例是多線程的。 老鳥:伸著懶腰,看著窗外明媚的陽光,喝一口清茶,心情大美。一天的好心情莫過于此。老鳥:菜鳥,你這消失了大半個(gè)月,忙什么呢?菜鳥:聽說node最近很火,這不趁著年輕,多儲存點(diǎn)知識儲備呢!老鳥:那你說說你對...
摘要:安裝及線上環(huán)境配置安裝官方安裝說明地址執(zhí)行命令至此,安裝完成版本查看安裝官方文檔地址首次安裝執(zhí)行命令以后創(chuàng)建項(xiàng)目只需在你需要的路徑下執(zhí)行開發(fā)測試環(huán)境下直接執(zhí)行以下命令啟動項(xiàng)目后面加上可以在修改現(xiàn)有文件后自動進(jìn)行重啟瀏覽器輸入即可 centos+node.js+nest.js+caddy+pm2安裝及線上環(huán)境配置 node.js安裝 官方安裝說明地址 https://github.com...
摘要:第三步在打開在地址欄輸入并回車后就會看到以下頁面了點(diǎn)擊上面的鏈接跳轉(zhuǎn)到調(diào)試頁面你會看到一個(gè)調(diào)試當(dāng)前代碼的彈窗。更好的體驗(yàn)是,當(dāng)你的重啟后,這個(gè)調(diào)試窗口會重新連接。從上圖,你會看到一堆經(jīng)常用到的調(diào)試工具。 事實(shí)上chrome devtools在2016年5月就已經(jīng)支持Nodejs的調(diào)試了,具體可以觀看英文原版Google I/O上的視頻 第一步:下載和安裝最新版本的Nodejs(要求6....
摘要:如何避免內(nèi)存泄露內(nèi)存泄漏很常見,特別是前端去寫后端程序,閉包運(yùn)用不當(dāng),循環(huán)引用等都會導(dǎo)致內(nèi)存泄漏。有的時(shí)候很難避免一些可能產(chǎn)生內(nèi)存泄漏的問題,可以利用每次調(diào)用都在一個(gè)沙箱環(huán)境下調(diào)用,用完回收調(diào)。 某一天用戶反饋打開的頁面白屏幕,怎么定位到產(chǎn)生錯(cuò)誤的原因呢?日常某次發(fā)布怎么確定發(fā)布會沒有引入bug呢?此時(shí)捕獲到代碼運(yùn)行的bug并上報(bào)是多么的重要。 既然捕獲錯(cuò)誤并上報(bào)是日常開發(fā)中不可缺少的...
摘要:如何避免內(nèi)存泄露內(nèi)存泄漏很常見,特別是前端去寫后端程序,閉包運(yùn)用不當(dāng),循環(huán)引用等都會導(dǎo)致內(nèi)存泄漏。有的時(shí)候很難避免一些可能產(chǎn)生內(nèi)存泄漏的問題,可以利用每次調(diào)用都在一個(gè)沙箱環(huán)境下調(diào)用,用完回收調(diào)。 某一天用戶反饋打開的頁面白屏幕,怎么定位到產(chǎn)生錯(cuò)誤的原因呢?日常某次發(fā)布怎么確定發(fā)布會沒有引入bug呢?此時(shí)捕獲到代碼運(yùn)行的bug并上報(bào)是多么的重要。 既然捕獲錯(cuò)誤并上報(bào)是日常開發(fā)中不可缺少的...
閱讀 2651·2021-11-22 15:24
閱讀 1383·2021-11-17 09:38
閱讀 2757·2021-10-09 09:57
閱讀 1209·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