node.js開發(fā)中的代碼調(diào)試實(shí)戰(zhàn)

做為前端開發(fā),寫Node.js 的代碼時(shí)候我很疑惑为鳄,這在調(diào)試代碼絕對(duì)不會(huì)是這樣笨拙裳仆,第一次都是通過console.log逐步推理調(diào)試代碼,后來想想肯定有類似谷歌調(diào)試工具一樣的工具幫助我們調(diào)試Node.js 的代碼孤钦,于是我查找資料歧斟,覺得這篇文章不錯(cuò),既有通過前臺(tái)頁面的調(diào)試方式-(Chrome Devtools方式)偏形,也有無前臺(tái)頁面的調(diào)試-(VSCode方式)静袖。

有了這個(gè)調(diào)試方法,能讓你的代碼開發(fā)方便很多俊扭。話不多說队橙,往下看~

調(diào)試 Node.js 代碼

準(zhǔn)備一段簡(jiǎn)單的 Node.js 代碼用來調(diào)試:

const os = require('os');

function func(a, b) {

? return a + b;

}

console.log(func(1,2));

console.log(os.cpus());

它的邏輯就是執(zhí)行了一個(gè)加法,然后打印了 cpu 的核心的情況萨惑。

直接執(zhí)行是這樣的:

打印了 1 + 2 的結(jié)果捐康,也就是 3 ,也打印了 CPU 核心的情況庸蔼,8 核的 M1 芯片解总。

那怎么斷點(diǎn)調(diào)試呢?

執(zhí)行的時(shí)候加上一個(gè) --inspect 的參數(shù)姐仅,就會(huì)啟動(dòng)調(diào)試服務(wù)了:

指定 --inspect-brk 參數(shù)還會(huì)在首行斷住花枫。

可以看到啟動(dòng)了一個(gè) WebSocket 的服務(wù)端,這就是調(diào)試服務(wù)掏膏,用某個(gè)調(diào)試工具客戶端連上就行了:

調(diào)試客戶端可以是 Chrome Devtools 也可以是 VSCode劳翰。

Chrome Devtools

比如用 Chrome Devtools 來連上是這樣的:

打開 chrome://inspect 的 url 就會(huì)看到這個(gè)可以連接的 target:

點(diǎn)擊 inspect 就是連上這個(gè) ws 服務(wù)端來做調(diào)試:

右邊可以看到調(diào)用棧、上下文的變量壤追,可以單步執(zhí)行磕道、可以打斷點(diǎn)等。

打印信息會(huì)輸出在 console

VSCode

用 VSCode 調(diào)試的話需要在項(xiàng)目根目錄下加一個(gè) .vscode/launch.json 的文件行冰,類型選擇 attach to process:

很容易理解溺蕉,就是連接到目標(biāo)進(jìn)程的 ws 服務(wù)的意思:

端口是 9229,也就是我們調(diào)試服務(wù)啟動(dòng)的端口悼做。

然后點(diǎn)擊調(diào)試面板的調(diào)試按鈕來啟動(dòng):

這樣也會(huì)在斷點(diǎn)處斷住疯特,可以單步運(yùn)行、可以看調(diào)用棧肛走、上下文的信息:

看到這里不知道有沒有同學(xué)會(huì)覺得這樣太麻煩了漓雅,每次都要起一個(gè) ws 調(diào)試服務(wù),然后再 attach,不能把這兩步合并到一塊自動(dòng)給做了嗎邻吞?

沒錯(cuò)组题,確實(shí)可以合并到一塊,也就是起一個(gè) ws 服務(wù)抱冷,然后自動(dòng) attach 上:

調(diào)試配置選擇 launch program:

只需要指定要調(diào)試的 Node.js 模塊的地址崔列,然后點(diǎn)擊啟動(dòng),這樣就可以調(diào)試了:

注意旺遮,想達(dá)到和 --inspect-brk 一樣的首行斷住的效果赵讯,這里要執(zhí)行 stopOnEntry 為 true。

效果是一樣的:

這樣比直接啟動(dòng) ws 調(diào)試服務(wù)耿眉,然后再 attach 還少了一步边翼。

原文鏈接:?https://juejin.cn/post/7102233142567632933

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市鸣剪,隨后出現(xiàn)的幾起案子组底,更是在濱河造成了極大的恐慌,老刑警劉巖筐骇,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斤寇,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡拥褂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門牙寞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來饺鹃,“玉大人,你說我怎么就攤上這事间雀』谙辏” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵惹挟,是天一觀的道長茄螃。 經(jīng)常有香客問我,道長连锯,這世上最難降的妖魔是什么归苍? 我笑而不...
    開封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮运怖,結(jié)果婚禮上拼弃,老公的妹妹穿的比我還像新娘。我一直安慰自己摇展,他們只是感情好吻氧,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般盯孙。 火紅的嫁衣襯著肌膚如雪鲁森。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天振惰,我揣著相機(jī)與錄音歌溉,去河邊找鬼。 笑死报账,一個(gè)胖子當(dāng)著我的面吹牛研底,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播透罢,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼榜晦,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了羽圃?” 一聲冷哼從身側(cè)響起乾胶,我...
    開封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎朽寞,沒想到半個(gè)月后识窿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡脑融,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年喻频,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肘迎。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡甥温,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出妓布,到底是詐尸還是另有隱情姻蚓,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布匣沼,位于F島的核電站狰挡,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏释涛。R本人自食惡果不足惜加叁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望唇撬。 院中可真熱鬧殉农,春花似錦、人聲如沸局荚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至轮傍,卻和暖如春暂雹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背创夜。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來泰國打工杭跪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人驰吓。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓涧尿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親檬贰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子姑廉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容