mirror of https://github.com/lukechilds/node.git
3 changed files with 75 additions and 0 deletions
@ -0,0 +1,73 @@ |
|||||
|
## Debugger |
||||
|
|
||||
|
V8 comes with an extensive debugger which is accessable out-of-process via a |
||||
|
simple [TCP protocol](http://code.google.com/p/v8/wiki/DebuggerProtocol). |
||||
|
Node has a built-in client for this debugger. To use this, start Node with the |
||||
|
`debug` argument; a prompt will appear: |
||||
|
|
||||
|
% node debug myscript.js |
||||
|
debug> |
||||
|
|
||||
|
At this point `myscript.js` is not yet running. To start the script, enter |
||||
|
the command `run`. If everything works okay, the output should look like |
||||
|
this: |
||||
|
|
||||
|
% node debug myscript.js |
||||
|
debug> run |
||||
|
debugger listening on port 5858 |
||||
|
connecting...ok |
||||
|
|
||||
|
Node's debugger client doesn't support the full range of commands, but |
||||
|
simple step and inspection is possible. By putting the statement `debugger;` |
||||
|
into the source code of your script, you will enable a breakpoint. |
||||
|
|
||||
|
For example, suppose `myscript.js` looked like this: |
||||
|
|
||||
|
// myscript.js |
||||
|
x = 5; |
||||
|
setTimeout(function () { |
||||
|
debugger; |
||||
|
console.log("world"); |
||||
|
}, 1000); |
||||
|
console.log("hello"); |
||||
|
|
||||
|
Then once the debugger is run, it will break on line 4. |
||||
|
|
||||
|
% ./node debug myscript.js |
||||
|
debug> run |
||||
|
debugger listening on port 5858 |
||||
|
connecting...ok |
||||
|
hello |
||||
|
break in #<an Object>._onTimeout(), myscript.js:4 |
||||
|
debugger; |
||||
|
^ |
||||
|
debug> next |
||||
|
break in #<an Object>._onTimeout(), myscript.js:5 |
||||
|
console.log("world"); |
||||
|
^ |
||||
|
debug> print x |
||||
|
5 |
||||
|
debug> print 2+2 |
||||
|
4 |
||||
|
debug> next |
||||
|
world |
||||
|
break in #<an Object>._onTimeout() returning undefined, myscript.js:6 |
||||
|
}, 1000); |
||||
|
^ |
||||
|
debug> quit |
||||
|
A debugging session is active. Quit anyway? (y or n) y |
||||
|
% |
||||
|
|
||||
|
|
||||
|
The `print` command allows you to evaluate variables. The `next` command steps |
||||
|
over to the next line. There are a few other commands available and more to |
||||
|
come type `help` to see others. |
||||
|
|
||||
|
|
||||
|
### Advanced Usage |
||||
|
|
||||
|
The V8 debugger can be enabled and accessed either by starting Node with |
||||
|
the `--debug` command-line flag or by signaling an existing Node process |
||||
|
with `SIGUSR1`. |
||||
|
|
||||
|
|
Loading…
Reference in new issue