Table of Contents
V8 Inspector Integration for Node.js
Debugger
Stability: 2 - Stable
Node.js includes an out-of-process debugging utility accessible via a V8 Inspector and built-in debugging client. To use it, start Node.js with the inspect argument followed by the path to the script to debug; a prompt will be displayed indicating successful launch of the debugger:
$ node inspect myscript.js < Debugger listening on ws://127.0.0.1:9229/80e7a814-7cd3-49fb-921a-2e02228cd5ba < For help, see: https://nodejs.org/en/docs/inspector < Debugger attached. Break on start in myscript.js:1 > 1 (function (exports, require, module, __filename, __dirname) { global.x = 5; 2 setTimeout(() => { 3 console.log('world'); debug>
The Node.js debugger client is not a full-featured debugger, but simple step and inspection are possible.
Inserting the statement debugger; into the source code of a script will enable a breakpoint at that position in the code:
// myscript.js global.x = 5; setTimeout(() => { debugger; console.log('world'); }, 1000); console.log('hello');
Once the debugger is run, a breakpoint will occur at line 3:
$ node inspect myscript.js < Debugger listening on ws://127.0.0.1:9229/80e7a814-7cd3-49fb-921a-2e02228cd5ba < For help, see: https://nodejs.org/en/docs/inspector < Debugger attached. Break on start in myscript.js:1 > 1 (function (exports, require, module, __filename, __dirname) { global.x = 5; 2 setTimeout(() => { 3 debugger; debug> cont < hello break in myscript.js:3 1 (function (exports, require, module, __filename, __dirname) { global.x = 5; 2 setTimeout(() => { > 3 debugger; 4 console.log('world'); 5 }, 1000); debug> next break in myscript.js:4 2 setTimeout(() => { 3 debugger; > 4 console.log('world'); 5 }, 1000); 6 console.log('hello'); debug> repl Press Ctrl + C to leave debug repl > x 5 > 2 + 2 4 debug> next < world break in myscript.js:5 3 debugger; 4 console.log('world'); > 5 }, 1000); 6 console.log('hello'); 7 debug> .exit
The repl command allows code to be evaluated remotely. The next command steps to the next line. Type help to see what other commands are available.
Pressing enter without typing a command will repeat the previous debugger command.
Watchers
It is possible to watch expression and variable values while debugging. On every breakpoint, each expression from the watchers list will be evaluated in the current context and displayed immediately before the breakpoint's source code listing.
To begin watching an expression, type watch('my_expression'). The command watchers will print the active watchers. To remove a watcher, type unwatch('my_expression').
Command reference
Stepping
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)
Breakpoints
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
It is also possible to set a breakpoint in a file (module) that is not loaded yet:
$ node inspect main.js < Debugger listening on ws://127.0.0.1:9229/4e3db158-9791-4274-8909-914f7facf3bd < For help, see: https://nodejs.org/en/docs/inspector < Debugger attached. Break on start in main.js:1 > 1 (function (exports, require, module, __filename, __dirname) { const mod = require('./mod.js'); 2 mod.hello(); 3 mod.hello(); debug> setBreakpoint('mod.js', 22) Warning: script 'mod.js' was not loaded yet. debug> c break in mod.js:22 20 // USE OR OTHER DEALINGS IN THE SOFTWARE. 21 >22 exports.hello = function() { 23 return 'hello from module'; 24 }; debug>
'IT' 카테고리의 다른 글
Android開発でList Viewを使おう! (0) | 2021.07.05 |
---|---|
JavaScriptでStringオブジェクトを使う方法【初心者向け】 (0) | 2021.07.05 |
MySQL Connector/JをAndroidから使ってみる (0) | 2021.07.05 |
[Android] CheckBox の配置 (0) | 2021.07.05 |
ANDROID スピナー (0) | 2021.07.04 |
댓글