mirror of
https://github.com/nodejs/node.git
synced 2025-05-15 14:41:29 +00:00

Conflicts: ChangeLog Makefile deps/npm/AUTHORS deps/npm/html/api/bin.html deps/npm/html/api/bugs.html deps/npm/html/api/commands.html deps/npm/html/api/config.html deps/npm/html/api/deprecate.html deps/npm/html/api/docs.html deps/npm/html/api/edit.html deps/npm/html/api/explore.html deps/npm/html/api/help-search.html deps/npm/html/api/init.html deps/npm/html/api/install.html deps/npm/html/api/link.html deps/npm/html/api/load.html deps/npm/html/api/ls.html deps/npm/html/api/npm.html deps/npm/html/api/outdated.html deps/npm/html/api/owner.html deps/npm/html/api/pack.html deps/npm/html/api/prefix.html deps/npm/html/api/prune.html deps/npm/html/api/publish.html deps/npm/html/api/rebuild.html deps/npm/html/api/restart.html deps/npm/html/api/root.html deps/npm/html/api/run-script.html deps/npm/html/api/search.html deps/npm/html/api/shrinkwrap.html deps/npm/html/api/start.html deps/npm/html/api/stop.html deps/npm/html/api/submodule.html deps/npm/html/api/tag.html deps/npm/html/api/test.html deps/npm/html/api/uninstall.html deps/npm/html/api/unpublish.html deps/npm/html/api/update.html deps/npm/html/api/version.html deps/npm/html/api/view.html deps/npm/html/api/whoami.html deps/npm/html/doc/README.html deps/npm/html/doc/adduser.html deps/npm/html/doc/bin.html deps/npm/html/doc/bugs.html deps/npm/html/doc/build.html deps/npm/html/doc/bundle.html deps/npm/html/doc/cache.html deps/npm/html/doc/changelog.html deps/npm/html/doc/coding-style.html deps/npm/html/doc/completion.html deps/npm/html/doc/config.html deps/npm/html/doc/deprecate.html deps/npm/html/doc/developers.html deps/npm/html/doc/disputes.html deps/npm/html/doc/docs.html deps/npm/html/doc/edit.html deps/npm/html/doc/explore.html deps/npm/html/doc/faq.html deps/npm/html/doc/folders.html deps/npm/html/doc/help-search.html deps/npm/html/doc/help.html deps/npm/html/doc/index.html deps/npm/html/doc/init.html deps/npm/html/doc/install.html deps/npm/html/doc/json.html deps/npm/html/doc/link.html deps/npm/html/doc/list.html deps/npm/html/doc/npm.html deps/npm/html/doc/outdated.html deps/npm/html/doc/owner.html deps/npm/html/doc/pack.html deps/npm/html/doc/prefix.html deps/npm/html/doc/prune.html deps/npm/html/doc/publish.html deps/npm/html/doc/rebuild.html deps/npm/html/doc/registry.html deps/npm/html/doc/removing-npm.html deps/npm/html/doc/restart.html deps/npm/html/doc/root.html deps/npm/html/doc/run-script.html deps/npm/html/doc/scripts.html deps/npm/html/doc/search.html deps/npm/html/doc/semver.html deps/npm/html/doc/shrinkwrap.html deps/npm/html/doc/star.html deps/npm/html/doc/start.html deps/npm/html/doc/stop.html deps/npm/html/doc/submodule.html deps/npm/html/doc/tag.html deps/npm/html/doc/test.html deps/npm/html/doc/uninstall.html deps/npm/html/doc/unpublish.html deps/npm/html/doc/update.html deps/npm/html/doc/version.html deps/npm/html/doc/view.html deps/npm/html/doc/whoami.html deps/npm/lib/install.js deps/npm/lib/ls.js deps/npm/man/man1/npm.1 deps/npm/man/man1/shrinkwrap.1 deps/npm/man/man3/npm.3 deps/npm/man/man3/shrinkwrap.3 deps/npm/node_modules/request/main.js deps/npm/node_modules/request/package.json deps/npm/package.json deps/uv/src/unix/core.c deps/v8/src/conversions-inl.h deps/v8/src/elements.cc deps/v8/src/version.cc doc/about/index.html doc/api/assert.markdown doc/api/child_process.markdown doc/api/cluster.markdown doc/api/crypto.markdown doc/api/debugger.markdown doc/api/dgram.markdown doc/api/dns.markdown doc/api/documentation.markdown doc/api/events.markdown doc/api/fs.markdown doc/api/globals.markdown doc/api/http.markdown doc/api/https.markdown doc/api/modules.markdown doc/api/net.markdown doc/api/os.markdown doc/api/path.markdown doc/api/process.markdown doc/api/querystring.markdown doc/api/readline.markdown doc/api/stdio.markdown doc/api/stream.markdown doc/api/timers.markdown doc/api/tls.markdown doc/api/tty.markdown doc/api/url.markdown doc/api/util.markdown doc/api/vm.markdown doc/api/zlib.markdown doc/api_assets/style.css doc/community/index.html doc/index.html doc/logos/index.html doc/template.html src/node_version.h tools/doc/html.js tools/gyp/test/mac/app-bundle/empty.c
139 lines
3.9 KiB
Markdown
139 lines
3.9 KiB
Markdown
# Debugger
|
|
|
|
Stability: 3 - Stable
|
|
|
|
<!-- type=misc -->
|
|
|
|
V8 comes with an extensive debugger which is accessible 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
|
|
< debugger listening on port 5858
|
|
connecting... ok
|
|
break in /home/indutny/Code/git/indutny/myscript.js:1
|
|
1 x = 5;
|
|
2 setTimeout(function () {
|
|
3 debugger;
|
|
debug>
|
|
|
|
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
|
|
< debugger listening on port 5858
|
|
connecting... ok
|
|
break in /home/indutny/Code/git/indutny/myscript.js:1
|
|
1 x = 5;
|
|
2 setTimeout(function () {
|
|
3 debugger;
|
|
debug> cont
|
|
< hello
|
|
break in /home/indutny/Code/git/indutny/myscript.js:3
|
|
1 x = 5;
|
|
2 setTimeout(function () {
|
|
3 debugger;
|
|
4 console.log("world");
|
|
5 }, 1000);
|
|
debug> next
|
|
break in /home/indutny/Code/git/indutny/myscript.js:4
|
|
2 setTimeout(function () {
|
|
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 /home/indutny/Code/git/indutny/myscript.js:5
|
|
3 debugger;
|
|
4 console.log("world");
|
|
5 }, 1000);
|
|
6 console.log("hello");
|
|
7
|
|
debug> quit
|
|
%
|
|
|
|
|
|
The `repl` command allows you to evaluate code remotely. 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.
|
|
|
|
## Watchers
|
|
|
|
You can watch expression and variable values while debugging your code.
|
|
On every breakpoint each expression from the watchers list will be evaluated
|
|
in the current context and displayed just before the breakpoint's source code
|
|
listing.
|
|
|
|
To start watching an expression, type `watch("my_expression")`. `watchers`
|
|
prints the active watchers. To remove a watcher, type
|
|
`unwatch("my_expression")`.
|
|
|
|
## Commands 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`, `cb(...)` - Clear breakpoint
|
|
|
|
### Info
|
|
|
|
* `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
|
|
|
|
### Execution control
|
|
|
|
* `run` - Run script (automatically runs on debugger's start)
|
|
* `restart` - Restart script
|
|
* `kill` - Kill script
|
|
|
|
### Various
|
|
|
|
* `scripts` - List all loaded scripts
|
|
* `version` - Display v8's version
|
|
|
|
## 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`.
|