日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nodejs的调试debug

發(fā)布時間:2024/2/28 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nodejs的调试debug 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 簡介
  • 開啟nodejs的調(diào)試
  • 調(diào)試的安全性
  • 使用WebStorm進行nodejs調(diào)試
  • 使用Chrome devTools進行調(diào)試
  • 使用node-inspect來進行調(diào)試
  • 其他的debug客戶端

簡介

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

今天我們來詳細介紹一下如何調(diào)試nodejs程序。

開啟nodejs的調(diào)試

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

先看下一個簡單的koa服務(wù)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服務(wù)。每次請求的時候,都會返回hello World,非常的簡單。

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

怎么進行調(diào)試呢?

我們需要加上 --inspect 參數(shù):

node --inspect app.js

上面的代碼將會開啟nodejs的調(diào)試功能。

我們看下輸出結(jié)果:

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

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

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

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

調(diào)試的安全性

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

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

默認情況下 --inspect 綁定的是127.0.0.1,這樣就只允許本地程序訪問。并且任何本地運行的程序都有權(quán)限進行該程序的調(diào)試。

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

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

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

node --inspect app.js

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

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

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

使用WebStorm進行nodejs調(diào)試

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

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

使用Chrome devTools進行調(diào)試

使用Chrome devTools進行調(diào)試的前提是我們已經(jīng)開啟了 --inspect模式。

在chrome中輸入chrome://inspect:

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

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

你可以對程序進行profile,也可以進行調(diào)試。

這里我們關(guān)注的是調(diào)試,所以轉(zhuǎn)到source一欄,添加你要調(diào)試的程序的源代碼:

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

使用node-inspect來進行調(diào)試

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

我們直接使用:

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調(diào)試窗口。

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

  • Stepping
    • cont, c: 繼續(xù)執(zhí)行
    • next, n: Step到下一步
    • step, s: Step in
    • out, o: Step out
    • pause: 暫停運行的代碼
  • Breakpoints
    • setBreakpoint(), sb(): 在當(dāng)前行設(shè)置斷點
    • setBreakpoint(line), sb(line): 在指定的行設(shè)置斷點
    • setBreakpoint(‘fn()’), sb(…): 在指定的function中設(shè)置斷點
    • setBreakpoint(‘script.js’, 1), sb(…): 在指定的腳本文件中設(shè)置斷點
    • clearBreakpoint(‘script.js’, 1), cb(…): 從文件中清除斷點
  • Information
    • backtrace, bt: 打印當(dāng)前execution frame的backtrace信息
    • list(5): 列出源代碼前后的5行
    • watch(expr): 添加監(jiān)聽表達式
    • unwatch(expr): 刪除監(jiān)聽表達式
    • watchers: 列出所有的watchers
    • repl: 打開repl表達式
    • exec expr: 執(zhí)行表達式

    通過上面的命令,我們可以在CLI中進行比較復(fù)雜的調(diào)試活動。

    其他的debug客戶端

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

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

    本文作者:flydean程序那些事

    本文鏈接:http://www.flydean.com/nodejs-debug/

    本文來源:flydean的博客

    歡迎關(guān)注我的公眾號:「程序那些事」最通俗的解讀,最深刻的干貨,最簡潔的教程,眾多你不知道的小技巧等你來發(fā)現(xiàn)!

    總結(jié)

    以上是生活随笔為你收集整理的nodejs的调试debug的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。