標籤:ack 執行流程 evel tcp .exe remove lines bre expr
node.exe調試JavaScript代碼目的:
Console.log可以列印一些資訊,光有log還不夠,當程式出現問題時通過log可以定位到錯誤位置,但是當我們想查看錯誤現場的變數時,log就無能為力了,一般情況下我們不會把所有的變數都列印出來。此時就需要斷點的功能了,在程式裡邊打上斷點,直接定位到錯誤位置,分析錯誤現場確認錯誤原因。
三種模式:
nodejs內部提供一個debug機制,可以讓程式進入debug模式,供開發人員一步一步分析代碼發現問題。
共有3中啟動參數可以讓程式進入debug模式
node debug app.js
node --debug app.js
node --debug -brk app.js
3種模式在調試形式上有一定區別。
1.node debug app.js
1).這種方式啟動程式,程式會進入debug模式,並運行到開機檔案的第1行就停止,等待開發人員下發往下走的命令
2).這種方式啟動程式,直接在當前cmd中進入偵錯模式
2.node --debug app.js
1).這種方式啟動程式,程式會進入debug模式,並運行完所有代碼。這種啟動方式往往用於程式啟動的過程中不需要調試,通過觸發時間進入回呼函數的情況,比如在某個http請求中打上斷點,等待用戶端訪問後進入斷點
2).這種方式啟動程式,會開啟一個TCP的連接埠監聽,在本cmd中不進入偵錯模式,需要另外開啟終端用node debug 命令串連調試連接埠
命令為 node debug localhost debug連接埠
或者 node debug p node進程id
3.node --debug-brk app.js
1).這種方式啟動程式,程式會進入debug模式,但是不會運行代碼,直到有一個終端串連到了debug連接埠,才開始執行代碼,並在第1行進入斷點
2).這種方式啟動程式,會開啟一個TCP的連接埠監聽,在本cmd中不進入偵錯模式,需要另外開啟終端用node debug 命令串連調試連接埠
進入debug模式後,可以通過一些命令來設定斷點、取消斷點以及控製程序執行流程
常用命令:1.流程式控制制相關
- cont, c - Continue execution
- next, n - Step next
- step, s - Step in
- out, o - Step out
- pause - Pause running code (like pause button in Developer Tools)
2. 斷點設定取消相關
- setBreakpoint(), sb() - Set breakpoint on current line
- setBreakpoint(line), sb(line) - Set breakpoint on specific line
- setBreakpoint(‘fn()‘), sb(...) - Set breakpoint on a first statement in functions body
- setBreakpoint(‘script.js‘, 1), sb(...) - Set breakpoint on first line of script.js
- clearBreakpoint(‘script.js‘, 1), cb(...) - Clear breakpoint in script.js on line 1
3. 變數查看相關
- backtrace, bt - Print backtrace of current execution frame
- list(5) - List scripts source code with 5 line context (5 lines before and after)
- watch(expr) - Add expression to watch list
- unwatch(expr) - Remove expression from watch list
- watchers - List all watchers and their values (automatically listed on each breakpoint)
- repl - Open debugger‘s repl for evaluation in debugging script‘s context
repl模式下可以輸入變數名查看變數內容
舉例:1. node debug
從第一行代碼開始進入斷點,命令n進入下一行
2. node --debug
cmd1 開啟調試連接埠
cmd2 串連調試連接埠
設定斷點,取消斷點
cmd1 過了一分鐘才繼續列印
用進程id的方式串連調試模組
可以看到pid為4436
repl模式
參考資料:
http://www.cnblogs.com/tzyy/p/5028348.html
http://www.cnblogs.com/dolphinX/archive/2013/12/22/3485345.html
【轉】node.exe調試JavaScript代碼