本文目錄一覽:
- 1、WebStorm3.0 調試nodejs 怎麼添加斷點
- 2、如何調試nodejs
- 3、nodejs如何打斷點調試程序
- 4、怎麼結束node.js serverside javascript
- 5、如何使用DevTools調試Nodejs運行的Javascript
WebStorm3.0 調試nodejs 怎麼添加斷點
如果你的程序要在啟動時就開始捕捉,建議在開始前預留幾秒的睡眠時間。
在webstorm調試的有個地方默認是選中,請去掉。
不要選中最後的紅色雷電標誌。
如何調試nodejs
1. 基於Nodejs內建的調試器
Nodejs提供了一個內建調試器來幫助開發者調試應用程序。想要開啟調試器我們需要在代碼中加入debugger標籤,當Nodejs執行到debugger標籤時會自動暫停(debugger標籤相當於在代碼中開啟一個斷點)。代碼如下:
var path = url.parse(req.url).pathname;
debugger;
res.writeHead(200, {‘Content-Type’: ‘text/plain’});
執行命令:node debug example.js 就可以進入調試模式。
在debug模式下,可以使用內建命令如repl去評估變數和表達式的值(如2所示)。我們也可以通過help命令來獲取完整的調試命令列表。
Commands: run (r), cont (c), next (n), step (s), out (o), backtrace (bt), setBreakpoint (sb), clearBreakpoint (cb),
watch, unwatch, watchers, repl, restart, kill, list, scripts, breakpoints, version
2. 基於V8插件的調試器
Nodejs是基於google V8的引擎上構建的,Google為Eclipse提供了一個對應的調試插件。關於如何在Eclipse中安裝和調試Nodejs程序就不再重複描述了,網上已經有很多的文章了(具體可以參考這篇文章)。唯一要注意的是在默認情況下V8引擎支持的調試模式是本地模式。如果想要開啟遠程調試的話,我們需要修改Nodejs中的V8源文件:/deps/v8/src/platform-posix.cc
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); — INADDR_ANY
addr.sin_port = htons(port);
然後重新編譯Nodejs。
提示:
用插件來調試nodejs程序,你有時候會遇到什麼connect refuse, get version failed等等錯誤。那麼請注意你使用的ip的地址, 一般下127.0.0.1的迴環地址是都工作的。如果你使用真實的ip地址,請檢查防火牆設置。
3. 基於Chrome瀏覽器的調試器
既然我們可以通過V8的調試插件來調試,那是否也可以借用Chrome瀏覽器的JavaScript調試器來調試呢?node-inspector模塊提供了這樣一種可能。我們需要先通過npm來安裝node-inspector
npm install -g node-inspector // -g 導入安裝路徑到環境變數
node-inspector是通過websocket方式來轉向debug輸入輸出的。因此,我們在調試前要先啟動node-inspector來監聽Nodejs的debug調試埠。
默認情況下node-inspector的埠是8080,可以通過參數–web-port=[port]來設置埠。在啟動node-inpspector之後,我們可以通過–debug或–debug-brk來啟動nodejs程序。通過在瀏覽器輸入http://[ip address]:8080/debug?port=5858,我們會得到如下的調試窗口:
這三種方法各自有優缺點,我個人比較欣賞node-inspector的方式。
具體可以參考這個帖子:
nodejs如何打斷點調試程序
應該是出錯了內存泄露,導致死掉,看看你動態分配的內存吧。
舉個例子,你利用嚮導生成一個程序,調一下,看看死機嗎?不可能吧。如果那都死機,說明你的VC安裝程序有問題,再或者是硬體有問題。
怎麼結束node.js serverside javascript
核心API支持一種事件驅動的體系結構,在這種體系結構中,對象(稱為「發射器」)周期性地發出命名事件,這些事件導致函數對象(「偵聽器」)被調用。例如,每當一個對等點連接到它時,當文件被打開時,或者當數據被讀取時,就會發出事件。
一類是非常重要的,這是EventEmitter類。發出事件的所有對象都是這個類的實例。他們暴露on() EventEmitter。功能,允許一個或多個功能被連接到命名物體發出的事件。
當EventEmitter對象發出一個事件,所有連接到這個特定的事件稱為同步功能。另一個重要概念是流。它是一個抽象介面,可以通過例如對HTTP伺服器的請求來實現。流是可讀的、可寫的,或者兩者都是(雙工的)。
所有數據流都eventemitters,但他們也有其他的自定義方法和屬性,取決於他們是否可讀,可寫,或雙。如果流既可讀又可寫,則它實現所有的方法和事件。因此,一個雙工或轉換流完全由這個API描述,儘管它們的實現可能有些不同。
雖然很多東西可以告訴如何利用Node.js為您的網站,我會結束這後一個簡單的「Hello World」的例子如何創建您的第一個Node.js後端代碼。
創建一個名為「myfirstnode文件。JS」,然後添加以下代碼:
const http = require(‘http’);
http.createServer( (request, response) = {
response.writeHead(200, {‘Content-Type’: ‘text/plain’});
response.end(‘Hello World\n’);
}).listen(8124);
console.log(‘Node.js server now running at
);
執行以下命令啟動伺服器:
$ node MyFirstNode.js
Server running at
測試瀏覽器中的鏈接會產生一個可預測的結果:
如何使用DevTools調試Nodejs運行的Javascript
目前,常用的瀏覽器IE、Chrome、Firefox都有相應的腳本調試功能。我們先來看IE的:
1、在F12開發人員工具中進行調試
打開IE瀏覽器,按下F12鍵,就會打開開發人員工具,這是IE內置的開發人員開發工具,方便開發人員對HTML、CSS、Javascript等網頁資源進行跟蹤調試使用的。
如果你打開的時候沒有固定在網頁底部,可以點擊右上角菜單欄中的按鈕來完成。
我們看到在這個工具窗口裡面有幾個標籤頁,分別是:HTML、CSS、控制台、腳本、探查器和網路,點開每一個標籤,可以執行相應的任務。
在HTML標籤窗口中,工具欄中的按鈕所執行的操作如下圖:
CSS標籤是用來查看樣式的;控制台顯示網頁中JS的各種輸出信息,包括錯誤信息、用戶日誌等;打開腳本標籤頁,這裡面才是我們想要的內容。
我在圖中用黃色矩形選中連個控制項,左側的下拉列表用來選擇文件,右側的按鈕用來啟動調試。當點擊啟動調試後,調試程序會將窗口最大化,我們在選中的文件中找到需要調試的位置,點擊左側邊欄添加斷點即可進行調試。
當有程序運行到我們的斷點處時,就可以進行調試了:
在這裡,我們可以使用快捷鍵進行操作,常用的快捷鍵如下:
F9:添加/移除 斷點
F10:逐過程,即跳過該語句中的方法、表達式等
F11:逐語句調試,即單步調試,會跳入方法、表達式,進行逐語句的跟蹤調試
在執行過程中,如果我們要執行即時的代碼,我們就需要在右側的窗格中輸入代碼,按回車即可:
如果要執行多行代碼,點擊運行按鈕右側的雙箭頭,就會打開多行模式。我就不再截圖片了。
這種直接在瀏覽器中調試的方法同樣適用於Google瀏覽器Chrome和FireFox FireDebug,只不過在細枝末葉上面有些不同罷了,主體的功能都是一樣的。
按F12鍵進入開發者工具,可以查看源代碼、樣式和js:
點擊Scripts按鈕,可以打開這個調試窗口,裡面包含了網頁中腳本文件源碼,點擊左側的按鈕可以打開選擇文件的側窗口。
2、使用debugger關鍵字進行調試
這種方法很簡單,我們只需要在進行調試的地方加入debugger關鍵字,然後當瀏覽器運行到這個關鍵字的時候,就會中斷:
設置以後就可以使用debugger關鍵字進行調試了;進過這樣的設置,我們還可以捕獲到意外的錯誤,進行跟蹤調試。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/287116.html