Alyssa Nicoll 0ad841a423 init commit | 9 rokov pred | |
---|---|---|
.. | ||
bin | 9 rokov pred | |
docs | 9 rokov pred | |
front-end | 9 rokov pred | |
front-end-node | 9 rokov pred | |
lib | 9 rokov pred | |
node_modules | 9 rokov pred | |
.jshintignore | 9 rokov pred | |
.jshintrc | 9 rokov pred | |
AUTHORS | 9 rokov pred | |
ChangeLog | 9 rokov pred | |
LICENSE | 9 rokov pred | |
README.md | 9 rokov pred | |
config.json | 9 rokov pred | |
index.js | 9 rokov pred | |
package.json | 9 rokov pred |
Node Inspector is a debugger interface for Node.js applications that uses the Blink Developer Tools (formerly WebKit Web Inspector).
The project maintenance and support is sponsored by StrongLoop.
$ npm install -g node-inspector
$ node-debug app.js
where app.js
is the name of your main Node application JavaScript file.
The node-debug
command will load Node Inspector in your default browser.
NOTE: Node Inspector works in Chrome and Opera only. You have to re-open the inspector page in one of those browsers if another browser is your default web browser (e.g. Safari or Internet Explorer).
Node Inspector works almost exactly as the Chrome Developer Tools. Read the excellent DevTools overview to get started.
Other useful resources:
The Blink DevTools debugger is a powerful JavaScript debugger interface. Node Inspector supports almost all of the debugging features of DevTools, including:
The debugged process must be started with --debug-brk
, this way the script is paused on the first line.
Note: node-debug
adds this option for you by default.
When in doubt, refresh the page in browser
Yes. Node Inspector must be running on the same machine, but your browser can be anywhere. Just make sure port 8080 is accessible.
Create a JSON-encoded array. You must escape quote characters when using a command-line option.
$ node-inspector --hidden='["node_modules/framework"]'
Note that the array items are interpreted as regular expressions.
Make sure that you have adblock disabled as well as any other content blocking scripts and plugins.
You may want to delete debug session metadata if for example Node Inspector gets in a bad state with some watch variables that were function calls (possibly into some special c-bindings). In such cases, even restarting the application/debug session may not fix the problem.
Node Inspector stores debug session metadata in the HTML5 local storage. You can inspect the contents of local storage and remove any items as needed. In Google Chrome, you can execute any of the following in the JavaScript console:
// Remove all
window.localStorage.clear()
// Or, to list keys so you can selectively remove them with removeItem()
window.localStorage
// Remove all the watch expressions
window.localStorage.removeItem('watchExpressions')
// Remove all the breakpoints
window.localStorage.removeItem('breakpoints')
When you are done cleaning up, hit refresh in the browser.
Try setting --no-preload to true. This option disables searching disk for *.js at startup.
You have to start _mocha
as the debugged process and make sure
the execution pauses on the first line. This way you have enough
time to set your breakpoints before the tests are run.
$ node-debug _mocha
While running node-debug
is a convenient way to start your debugging
session, there may come time when you need to tweak the default setup.
There are three steps needed to get you up and debugging:
$ node-inspector
You can leave the server running in background, it's possible to debug multiple processes using the same server instance.
You can either start Node with a debug flag like:
$ node --debug your/node/program.js
or, to pause your script on the first line:
$ node --debug-brk your/short/node/script.js
Or you can enable debugging on a node that is already running by sending it a signal:
Get the PID of the node process using your favorite method.
pgrep
or ps -ef
are good
$ pgrep -l node
2345 node your/node/server.js
Send it the USR1 signal
$ kill -s USR1 2345
Windows does not support UNIX signals. To enable debugging, you can use
an undocumented API function process._debugProcess(pid)
:
Get the PID of the node process using your favorite method, e.g.
> tasklist /FI "IMAGENAME eq node.exe"
Image Name PID Session Name Session# Mem Usage
========================= ======== ================ =========== ============
node.exe 3084 Console 1 11,964 K
Call the API:
> node -e "process._debugProcess(3084)"
Open http://127.0.0.1:8080/debug?port=5858 in the Chrome browser.
Command line options:
--debug-brk, -b Break on the first line (`node --debug-brk`) [default: true]
--web-port, -p, --port Node Inspector port (`node-inspector --web-port={port}`)
--debug-port, -d Node/V8 debugger port (`node --debug={port}`)
--cli, -c CLI mode, do not open browser.
--version, -v Print Node Inspector's version.
--help, -h Show this help.
node-inspector uses rc [github] module to collect options.
Places for configuration:
node-inspector_
--config file
then from that file.node-inspectorrc
or the first found looking in ./ ../ ../../
../../../
etc.* ```$HOME/.node-inspector/config```
* ```$HOME/.config/node-inspector```
* ```$HOME/.config/node-inspector/config```
* ```/etc/node-inspectorrc```
* ```/etc/node-inspector/config```
* options from ```config.json``` for backward compatibility
* defaults described in Node Inspector`s [./lib/config.js](lib/config.js).
All configuration sources that where found will be flattened into one object,
so that sources earlier in this list override later ones.
Use dashed option names in RC files. Sample config file:
js
{ "web-port": 8088, "web-host": null, "debug-port": 5858, "save-live-edit": true, "no-preload": true, "hidden": [], "stack-trace-limit": 50 }
List of predefined options:
Option Default Description
--help | | Print information about options --web-port | 8080 | Port to host the inspector --web-host | 127.0.0.1 | Host to listen on --debug-port | 5858 | Port to connect to the debugging app --save-live-edit | false | Save live edit changes to disk
| | (update the edited files)
--preload | true | Preload *.js files. You can disable this option
| | to speed up the startup.
--hidden | [] | Array of files to hide from the UI
| | (breakpoints in these files will be ignored)
--stack-trace-limit | 50 | Number of stack frames to show on a breakpoint ```
Making Node Inspector the best debugger for node.js cannot be achieved without the help of the community. The following resources should help you to get started.
Maintainers
Big thanks to the many contributors to the project, see AUTHORS.