239 lines
9.5 KiB
HTML
239 lines
9.5 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>Debugger Node.js v0.8.14 Manual & Documentation</title>
|
|
<link rel="stylesheet" href="assets/style.css">
|
|
<link rel="stylesheet" href="assets/sh.css">
|
|
<link rel="canonical" href="http://nodejs.org/api/debugger.html">
|
|
</head>
|
|
<body class="alt apidoc" id="api-section-debugger">
|
|
<div id="intro" class="interior">
|
|
<a href="/" title="Go back to the home page">
|
|
<img id="logo" src="http://nodejs.org/images/logo-light.png" alt="node.js">
|
|
</a>
|
|
</div>
|
|
<div id="content" class="clearfix">
|
|
<div id="column2" class="interior">
|
|
<ul>
|
|
<li><a href="/" class="home">Home</a></li>
|
|
<li><a href="/download/" class="download">Download</a></li>
|
|
<li><a href="/about/" class="about">About</a></li>
|
|
<li><a href="http://search.npmjs.org/" class="npm">npm Registry</a></li>
|
|
<li><a href="http://nodejs.org/api/" class="docs current">Docs</a></li>
|
|
<li><a href="http://blog.nodejs.org" class="blog">Blog</a></li>
|
|
<li><a href="/community/" class="community">Community</a></li>
|
|
<li><a href="/logos/" class="logos">Logos</a></li>
|
|
<li><a href="http://jobs.nodejs.org/" class="jobs">Jobs</a></li>
|
|
</ul>
|
|
<p class="twitter"><a href="http://twitter.com/nodejs">@nodejs</a></p>
|
|
</div>
|
|
|
|
<div id="column1" class="interior">
|
|
<header>
|
|
<h1>Node.js v0.8.14 Manual & Documentation</h1>
|
|
<div id="gtoc">
|
|
<p>
|
|
<a href="index.html" name="toc">Index</a> |
|
|
<a href="all.html">View on single page</a> |
|
|
<a href="debugger.json">View as JSON</a>
|
|
</p>
|
|
</div>
|
|
<hr>
|
|
</header>
|
|
|
|
<div id="toc">
|
|
<h2>Table of Contents</h2>
|
|
<ul>
|
|
<li><a href="#debugger_debugger">Debugger</a><ul>
|
|
<li><a href="#debugger_watchers">Watchers</a></li>
|
|
<li><a href="#debugger_commands_reference">Commands reference</a><ul>
|
|
<li><a href="#debugger_stepping">Stepping</a></li>
|
|
<li><a href="#debugger_breakpoints">Breakpoints</a></li>
|
|
<li><a href="#debugger_info">Info</a></li>
|
|
<li><a href="#debugger_execution_control">Execution control</a></li>
|
|
<li><a href="#debugger_various">Various</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#debugger_advanced_usage">Advanced Usage</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
<div id="apicontent">
|
|
<h1>Debugger<span><a class="mark" href="#debugger_debugger" id="debugger_debugger">#</a></span></h1>
|
|
<pre><code>Stability: 3 - Stable</code></pre>
|
|
<!-- type=misc -->
|
|
|
|
<p>V8 comes with an extensive debugger which is accessible out-of-process via a
|
|
simple <a href="http://code.google.com/p/v8/wiki/DebuggerProtocol">TCP protocol</a>.
|
|
Node has a built-in client for this debugger. To use this, start Node with the
|
|
<code>debug</code> argument; a prompt will appear:
|
|
|
|
</p>
|
|
<pre><code>% 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></code></pre>
|
|
<p>Node's debugger client doesn't support the full range of commands, but
|
|
simple step and inspection is possible. By putting the statement <code>debugger;</code>
|
|
into the source code of your script, you will enable a breakpoint.
|
|
|
|
</p>
|
|
<p>For example, suppose <code>myscript.js</code> looked like this:
|
|
|
|
</p>
|
|
<pre><code>// myscript.js
|
|
x = 5;
|
|
setTimeout(function () {
|
|
debugger;
|
|
console.log("world");
|
|
}, 1000);
|
|
console.log("hello");</code></pre>
|
|
<p>Then once the debugger is run, it will break on line 4.
|
|
|
|
</p>
|
|
<pre><code>% 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
|
|
%</code></pre>
|
|
<p>The <code>repl</code> command allows you to evaluate code remotely. The <code>next</code> command
|
|
steps over to the next line. There are a few other commands available and more
|
|
to come. Type <code>help</code> to see others.
|
|
|
|
</p>
|
|
<h2>Watchers<span><a class="mark" href="#debugger_watchers" id="debugger_watchers">#</a></span></h2>
|
|
<p>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.
|
|
|
|
</p>
|
|
<p>To start watching an expression, type <code>watch("my_expression")</code>. <code>watchers</code>
|
|
prints the active watchers. To remove a watcher, type
|
|
<code>unwatch("my_expression")</code>.
|
|
|
|
</p>
|
|
<h2>Commands reference<span><a class="mark" href="#debugger_commands_reference" id="debugger_commands_reference">#</a></span></h2>
|
|
<h3>Stepping<span><a class="mark" href="#debugger_stepping" id="debugger_stepping">#</a></span></h3>
|
|
<ul>
|
|
<li><code>cont</code>, <code>c</code> - Continue execution</li>
|
|
<li><code>next</code>, <code>n</code> - Step next</li>
|
|
<li><code>step</code>, <code>s</code> - Step in</li>
|
|
<li><code>out</code>, <code>o</code> - Step out</li>
|
|
<li><code>pause</code> - Pause running code (like pause button in Developer TOols)</li>
|
|
</ul>
|
|
<h3>Breakpoints<span><a class="mark" href="#debugger_breakpoints" id="debugger_breakpoints">#</a></span></h3>
|
|
<div class="signature"><ul>
|
|
<li><code>setBreakpoint()</code>, <code>sb()</code> - Set breakpoint on current line</li>
|
|
<li><code>setBreakpoint(line)</code>, <code>sb(line)</code> - Set breakpoint on specific line</li>
|
|
<li><code>setBreakpoint('fn()')</code>, <code>sb(...)</code> - Set breakpoint on a first statement in
|
|
functions body</li>
|
|
<li><code>setBreakpoint('script.js', 1)</code>, <code>sb(...)</code> - Set breakpoint on first line of
|
|
script.js</li>
|
|
<li><code>clearBreakpoint</code>, <code>cb(...)</code> - Clear breakpoint</li>
|
|
</div></ul>
|
|
<h3>Info<span><a class="mark" href="#debugger_info" id="debugger_info">#</a></span></h3>
|
|
<div class="signature"><ul>
|
|
<li><code>backtrace</code>, <code>bt</code> - Print backtrace of current execution frame</li>
|
|
<li><code>list(5)</code> - List scripts source code with 5 line context (5 lines before and
|
|
after)</li>
|
|
<li><code>watch(expr)</code> - Add expression to watch list</li>
|
|
<li><code>unwatch(expr)</code> - Remove expression from watch list</li>
|
|
<li><code>watchers</code> - List all watchers and their values (automatically listed on each
|
|
breakpoint)</li>
|
|
<li><code>repl</code> - Open debugger's repl for evaluation in debugging script's context</li>
|
|
</div></ul>
|
|
<h3>Execution control<span><a class="mark" href="#debugger_execution_control" id="debugger_execution_control">#</a></span></h3>
|
|
<div class="signature"><ul>
|
|
<li><code>run</code> - Run script (automatically runs on debugger's start)</li>
|
|
<li><code>restart</code> - Restart script</li>
|
|
<li><code>kill</code> - Kill script</li>
|
|
</div></ul>
|
|
<h3>Various<span><a class="mark" href="#debugger_various" id="debugger_various">#</a></span></h3>
|
|
<div class="signature"><ul>
|
|
<li><code>scripts</code> - List all loaded scripts</li>
|
|
<li><code>version</code> - Display v8's version</li>
|
|
</div></ul>
|
|
<h2>Advanced Usage<span><a class="mark" href="#debugger_advanced_usage" id="debugger_advanced_usage">#</a></span></h2>
|
|
<p>The V8 debugger can be enabled and accessed either by starting Node with
|
|
the <code>--debug</code> command-line flag or by signaling an existing Node process
|
|
with <code>SIGUSR1</code>.
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="footer">
|
|
<ul class="clearfix">
|
|
<li><a href="/">Node.js</a></li>
|
|
<li><a href="/download/">Download</a></li>
|
|
<li><a href="/about/">About</a></li>
|
|
<li><a href="http://search.npmjs.org/">npm Registry</a></li>
|
|
<li><a href="http://nodejs.org/api/">Docs</a></li>
|
|
<li><a href="http://blog.nodejs.org">Blog</a></li>
|
|
<li><a href="/community/">Community</a></li>
|
|
<li><a href="/logos/">Logos</a></li>
|
|
<li><a href="http://jobs.nodejs.org/">Jobs</a></li>
|
|
<li><a href="http://twitter.com/nodejs" class="twitter">@nodejs</a></li>
|
|
</ul>
|
|
|
|
<p>Copyright <a href="http://joyent.com/">Joyent, Inc</a>, Node.js is a <a href="/trademark-policy.pdf">trademark</a> of Joyent, Inc. View <a href="https://raw.github.com/joyent/node/v0.8.14/LICENSE">license</a>.</p>
|
|
</div>
|
|
|
|
<script src="../sh_main.js"></script>
|
|
<script src="../sh_javascript.min.js"></script>
|
|
<script>highlight(undefined, undefined, 'pre');</script>
|
|
<script>
|
|
window._gaq = [['_setAccount', 'UA-10874194-2'], ['_trackPageview']];
|
|
(function(d, t) {
|
|
var g = d.createElement(t),
|
|
s = d.getElementsByTagName(t)[0];
|
|
g.src = '//www.google-analytics.com/ga.js';
|
|
s.parentNode.insertBefore(g, s);
|
|
}(document, 'script'));
|
|
</script>
|
|
</body>
|
|
</html>
|
|
|