站長資訊網
        最全最豐富的資訊網站

        如何開啟nodejs調試?如何調試nodejs程序?

        如何調試nodejs程序?下面本篇文章給大家介紹一下nodejs調試debug的方法,希望對大家有所幫助!

        如何開啟nodejs調試?如何調試nodejs程序?

        對于開發者來說,在開發應用程序的過程中,往往為了開發方便和解決bug需要借助于編程語言的調試功能。一般來說我們需要借助于強大IDE的調試功能來完成這項工作。nodejs也不例外。

        今天我們來詳細介紹一下如何調試node程序。

        開啟nodejs的調試

        還記得之前我們講到的koa程序嗎?本文將會以一個簡單的koa服務端程序為例,來展開nodejs的調試。

        先看下一個簡單的koa服務app.js:

        const Koa = require('koa'); const app = module.exports = new Koa();  app.use(async function(ctx) {   ctx.body = 'Hello World'; });  if (!module.parent) app.listen(3000);

        上面的程序開啟了3000端口,建立了一個http服務。每次請求的時候,都會返回hello World,非常的簡單。

        要想運行上面的程序,我們需要執行node app.js。 這會執行app.js但是并不會開啟調試功能。

        怎么進行調試呢?

        我們需要加上 –inspect 參數:

        node --inspect app.js

        上面的代碼將會開啟nodejs的調試功能。

        我們看下輸出結果:

        Debugger listening on ws://127.0.0.1:9229/88c23ae3-9081-41cd-98b0-d0f7ebceab5a For help, see: https://nodejs.org/en/docs/inspector

        結果告訴了我們兩件事情,第一件事情就是debugger監聽的端口。默認情況下將會開啟127.0.0.1的9229端口。并且分配了一個唯一的UUID以供區分。

        第二件事情就是告訴我們nodejs使用的調試器是Inspector。

        Inspector是nodejs 8之后引入的,如果是在nodejs 7之前,那么使用的是legacy debugger。

        調試的安全性

        如果debugger連接到了nodejs運行環境中,如果有惡意攻擊者的話,這個惡意攻擊者可以在nodejs環境中運行任意代碼。這會給我們的程序帶來很大的安全隱患。

        所以我們一定要注意調試的安全性。一般來說,我們不建議進行遠程調試。

        默認情況下 –inspect 綁定的是127.0.0.1,這樣就只允許本地程序訪問。并且任何本地運行的程序都有權限進行該程序的調試。

        如果我們真的想將debug程序暴露給外部程序的話,那么可以指明本機的外網IP地址或者0.0.0.0(表示任何地址,無限制),這樣遠程機子就可以進行遠程調試了。

        如果我們想進行安全的remote debug該怎么處理呢?

        首先,我們要開啟本地的debug:

        node --inspect app.js

        然后我們可以搭建一個ssh隧道,將本地的9221端口映射到遠程服務器的9229端口:

        ssh -L 9221:localhost:9229 user@remote.example.com

        這樣我們就可以通過連接本地的9221端口,進行遠程調試了。

        使用WebStorm進行nodejs調試

        JetBrains出品的WebStorm可謂是開發nodejs的利器,WebStorm自帶有debug選項,如果開啟該選項,則會在后臺開啟 –inspect:

        如何開啟nodejs調試?如何調試nodejs程序?

        使用WebStorm來進行調試和使用IDEA來進行java程序調試類似,這里就不多介紹了。

        使用Chrome devTools進行調試

        使用Chrome devTools進行調試的前提是我們已經開啟了 –inspect模式。

        在chrome中輸入chrome://inspect:

        如何開啟nodejs調試?如何調試nodejs程序?

        我們可看到chrome inspect的界面,如果你本地已經有開啟inspect的nodejs程序的話,在Remote Target中就可以直接看到。

        選中你要調試的target,點擊inspect,即可開啟Chrome devTools調試工具:

        如何開啟nodejs調試?如何調試nodejs程序?

        你可以對程序進行profile,也可以進行調試。

        這里我們關注的是調試,所以轉到source一欄,添加你要調試的程序的源代碼:

        如何開啟nodejs調試?如何調試nodejs程序?

        加入斷點即可開始調試了。和在chrome中調試web端的js是一樣的。

        使用node-inspect來進行調試

        其實nodejs有一個自帶的調試工具,叫做node-inspect,這是一個cli的調試工具。我們看一下怎么使用。

        我們直接使用:

        node inspect app.js  < Debugger listening on ws://127.0.0.1:9229/f1c64736-47a1-42c9-9e9e-f2665073d3eb < For help, see: https://nodejs.org/en/docs/inspector < Debugger attached. Break on start in app.js:1 > 1 const Koa = require('koa');   2 const app = module.exports = new Koa();   3  debug>

        node inspect 做了兩件事情,第一件事情就是生成子程序去運行node –inspect app.js,第二件事情就是在主程序中運行CLI調試窗口。

        這個CLI調試程序為我們提供了一些非常有用的命令:

        1、Stepping

        • cont, c: 繼續執行
        • next, n: Step到下一步
        • step, s: Step in
        • out, o: Step out
        • pause: 暫停運行的代碼

        2、Breakpoints

        • setBreakpoint(), sb(): 在當前行設置斷點
        • setBreakpoint(line), sb(line): 在指定的行設置斷點
        • setBreakpoint(‘fn()’), sb(…): 在指定的function中設置斷點
        • setBreakpoint(‘script.js’, 1), sb(…): 在指定的腳本文件中設置斷點
        • clearBreakpoint(‘script.js’, 1), cb(…): 從文件中清除斷點

        3、Information

        • backtrace, bt: 打印當前execution frame的backtrace信息
        • list(5): 列出源代碼前后的5行
        • watch(expr): 添加監聽表達式
        • unwatch(expr): 刪除監聽表達式
        • watchers: 列出所有的watchers
        • repl: 打開repl表達式
        • exec expr: 執行表達式

        通過上面的命令,我們可以在CLI中進行比較復雜的調試活動。

        其他的debug客戶端

        除了上面我們講到的幾個之外,我們還可以使用vscode,Visual Studio ,Eclipse IDE 等來進行nodejs的調試,這里就不一一詳細介紹了。

        感興趣的朋友可以自行探索。

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国产麻豆精品一区二区三区v视界 国产麻豆一精品一AV一免费 | 国产成人精品久久亚洲高清不卡 | 亚洲第一区精品观看| 久久精品国产免费| 精品一区二区三区无码免费视频| 久久精品成人欧美大片| 欧美一区二区精品| 国产精品合集一区二区三区| 亚洲精品高清无码视频| 少妇亚洲免费精品| 国产精品va久久久久久久| 久久99精品国产麻豆宅宅| 国产精品拍天天在线| 无码囯产精品一区二区免费| 永久无码精品三区在线4| 精品无人区无码乱码毛片国产| 伊人久久大香线蕉精品| 精品国产一区二区三区免费| 2048亚洲精品国产| 2022免费国产精品福利在线| 99精品一区二区三区无码吞精 | 99国产欧美久久久精品蜜芽| 亚洲av永久无码精品表情包| 亚洲精品高清在线| 日韩精品一区二区午夜成人版 | 国产精品成人在线| jizz国产精品网站| 国产成人精品高清在线观看93| 国语精品一区二区三区| 精品无码久久久久久午夜| 精品久久久久久久无码| 国产精品区一区二区三在线播放| 丰满人妻熟妇乱又仑精品| 国产精品无码无卡在线播放| 国产网红无码精品视频| 国产精品高清一区二区三区不卡| 91精品国产福利在线导航| 老司机69精品成免费视频| 在线电影国产精品| 精品国产人成亚洲区| 日韩精品毛片|