基于node.js之調(diào)試器詳解
1.在命令行窗口中,可以使用"node debug" 命令來啟用調(diào)試器,代碼如下:
node debug<需要被執(zhí)行的腳本文件名>接下來根據(jù)一個實例進(jìn)行學(xué)習(xí)調(diào)試過程:
編寫app.js文件進(jìn)行調(diào)試:
console.log('hello,word')
function foo(){
console.log('hello,foo')
return 100;
}
var bar = 'This is a pen';
var http = require('http')
var i = foo();
console.log(i)
1 在命令行窗口使用"node debug"命令,結(jié)果如下所示:
[root@kuber2 webproject]# node debug app.js
< Debugger listening on [::]:5858
connecting to 127.0.0.1:5858 ... ok
break in app.js:1
> 1 console.log('hello,word')
2 function foo(){
3 console.log('hello,foo')
debug>
在Node.js中提供了一個可以通過簡單TCP協(xié)議來訪問的調(diào)試器,進(jìn)入調(diào)試后,首先連接調(diào)試器,如上圖所示出現(xiàn)Debugger并后面跟有ok,說明調(diào)試器已經(jīng)成功使用。"break in app.js:1" 表示腳本程序暫停的位置
2 繼續(xù)執(zhí)行可輸入"cont"或"c",繼續(xù)執(zhí)行剩余的代碼,結(jié)果如下所示:
[root@kuber2 webproject]# node debug app.js
< Debugger listening on [::]:5858
connecting to 127.0.0.1:5858 ... ok
break in app.js:1
> 1 console.log('hello,word')
2 function foo(){
3 console.log('hello,foo')
debug> c
< hello,word
< hello,foo
< 100
3 如果不需要執(zhí)行剩余的所有腳本代碼,輸入"next"或"n"將程序執(zhí)行到下一句可執(zhí)行代碼前,如下所示:
[root@kuber2 webproject]# node debug app.js
< Debugger listening on [::]:5858
connecting to 127.0.0.1:5858 ... ok
break in app.js:1
> 1 console.log('hello,word')
2 function foo(){
3 console.log('hello,foo')
debug> n
< hello,word
break in app.js:6
4 return 100;
5 }
> 6 var bar = 'This is a pen';
7 var http = require('http')
8 var i = foo();
debug>
4 如果想進(jìn)入函數(shù)進(jìn)行調(diào)試,可以在函數(shù)被調(diào)用出輸入命令"step"或"s",進(jìn)入函數(shù)體,如圖所示:
break in app.js:8
6 var bar = 'This is a pen';
7 var http = require('http')
> 8 var i = foo();
9 console.log(i)
10
debug> s
break in app.js:3
1 console.log('hello,word')
2 function foo(){
> 3 console.log('hello,foo')
4 return 100;
5 }
debug>
5 在函數(shù)體中可以用"n",逐步進(jìn)行調(diào)試,還可輸入"out"或"o" 立即執(zhí)行完函數(shù)內(nèi)所有代碼,程序?qū)和5奖徽{(diào)用函數(shù)代碼后的一句代碼前,如圖所示:
break in app.js:3
1 console.log('hello,word')
2 function foo(){
> 3 console.log('hello,foo')
4 return 100;
5 }
debug> n
< hello,foo
break in app.js:4
2 function foo(){
3 console.log('hello,foo')
> 4 return 100;
5 }
6 var bar = 'This is a pen';
debug> o
break in app.js:9
7 var http = require('http')
8 var i = foo();
> 9 console.log(i)
10
11 });
debug>
6 利用watch可以觀察變量或一些表達(dá)式的值,利用unwatch可以取消觀看,具體應(yīng)用如下代碼所示:
break in app.js:1
> 1 console.log('hello,word')
2 function foo(){
3 console.log('hello,foo')
debug> watch("i")
debug> watch("i==100")
debug> n
< hello,word
break in app.js:6
Watchers:
0: i = undefined
1: i==100 = false
4 return 100;
5 }
> 6 var bar = 'This is a pen';
7 var http = require('http')
8 var i = foo();
debug> n
break in app.js:7
Watchers:
0: i = undefined
1: i==100 = false
5 }
6 var bar = 'This is a pen';
> 7 var http = require('http')
8 var i = foo();
9 console.log(i)
debug> n
break in app.js:8
Watchers:
0: i = undefined
1: i==100 = false
6 var bar = 'This is a pen';
7 var http = require('http')
> 8 var i = foo();
9 console.log(i)
10
debug> n
< hello,foo
break in app.js:9
Watchers:
0: i = 100
1: i==100 = true
7 var http = require('http')
8 var i = foo();
> 9 console.log(i)
10
11 });
debug> unwatch("i")
debug> unwatch("i==100")
debug> n
< 100
break in app.js:11
9 console.log(i)
10
>11 });
debug>
7 可以利用setBreakpoint(filename,line)或cb(filename,line),設(shè)置斷點,第一個參數(shù)為設(shè)置斷點的文件名,不填默認(rèn)為i正在運行的文件,line為需要加斷點的行號;可以利用clearBreakPoint(filename,line)或cb(filename,line)取消斷點
8 使用list(n)可以顯示所調(diào)試語句的前幾后與后幾行代碼
9 使用repl可以特推出debug模式
10 使用restart可以重新開始文本調(diào)試
11 使用kill終止腳本文件調(diào)試
12 利用kill終止文本調(diào)試后可利用run重新開始
13 利用backtrace或bt可以返回運行代碼的所處位置
14 利用script可以查看所有被加載的模塊名稱
以上這篇基于node.js之調(diào)試器詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- vscode調(diào)試node.js的實現(xiàn)方法
- Node.js使用supervisor進(jìn)行開發(fā)中調(diào)試的方法
- 詳解如何在vscode里面調(diào)試js和node.js的方法步驟
- sublime text配置node.js調(diào)試(圖文教程)
- 詳解使用Visual Studio Code對Node.js進(jìn)行斷點調(diào)試
- Node.js利用debug模塊打印出調(diào)試日志的方法
- Node.js調(diào)試技術(shù)總結(jié)分享
- 利用Chrome DevTools直接調(diào)試Node.js和JavaScript的方法詳解(并行)
- 調(diào)試Node.JS的輔助工具(NodeWatcher)
- Node.js 深度調(diào)試方法解析
相關(guān)文章
NodeJS使用文件流解決大文件處理的內(nèi)存與時間效率問題
在 NodeJS 中,文件操作是常見的任務(wù)之一,然而,當(dāng)處理大文件時,直接將整個文件加載到內(nèi)存中可能會導(dǎo)致內(nèi)存溢出或性能瓶頸,為了解決這一問題,NodeJS 提供了文件流(Stream)機(jī)制,本文將詳細(xì)介紹文件流的優(yōu)點、使用方法、應(yīng)用場景,并探討背壓(Backpressure)的概念2025-01-01
nodejs抓取notion?emoji?svg資源的腳本示例
這篇文章主要為大家介紹了nodejs抓取notion?emoji?svg資源腳本實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
Node.js基于node-schedule實現(xiàn)定時任務(wù)的操作步驟
實際工作中,可能會遇到定時清除某個文件夾內(nèi)容,定時發(fā)送消息或發(fā)送郵件給指定用戶,定時導(dǎo)出某些數(shù)據(jù)等,node-schedule是一個非常不錯的npm包,可以幫助我們快速的創(chuàng)建和管理定時任務(wù),所以本文介紹了Node.js基于node-schedule實現(xiàn)定時任務(wù)的操作步驟,需要的朋友可以參考下2024-09-09
npm一鍵安裝Python以及node-sass依賴環(huán)境的方法
Node-sass是一個庫,它將Node.js綁定到LibSass,下面這篇文章主要給大家介紹了關(guān)于npm一鍵安裝Python以及node-sass依賴環(huán)境的相關(guān)資料,文中還介紹了安裝node-sass報錯Python環(huán)境問題避坑指南,需要的朋友可以參考下2022-09-09

