I use 'forever' to run my application. I want to attach to the running environment to inspect my application. So what can I do?
From http://nodejs.org/api/debugger.html :
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.
Find the PID of your node
process and then sending SIGUSR1
should do the trick:
kill -s SIGUSR1 nodejs-pid
Then run node-inspector
and browse to the URL it indicates. More in this tutorial .
Starting from Node 6.3 , node has a built-in debugger that can be triggered (even in a production app) by doing:
kill -USR1 <node-pid>
The node process will spit out something like this:
Debugger listening on ws://127.0.0.1:9229/f3f6f226-7dbc-4009-95fa-d516ba132fbd
For help see https://nodejs.org/en/docs/inspector
chrome://inspect
on http://host.domain:9229
.If you cannot connect via a browser (eg the server is in a firewalled production cluster), you can activate a REPL to inspect over the command line:
node inspect -p <node-pid>
ssh -nNTL 9229:localhost:9229 <username>@<your_host> -i <keyfile>.pem
) and you'll find your script under chrome://inspect
after a few seconds. Prior to this version, node-inspector
was a separate tool for debugging Node processes. However, as documented on its own page, it is mostly deprecated as the now-bundled debugger is actively maintained and provides more advanced features. For more information on this change, see this thread .
For me, running node version 6.9.10 I had to:
kill -USR1 <node-pid>
then
node debug -p <node-pid>
the node inspect -p <node-pid>
command failed for this version of node.
You can add a REPL to your app. For example, if you add a REPL to listen on localhost port 5001, you start your app as usual and login with telnet: telnet localhost 5001
. That will take you to a prompt where you can interact with your app directly.
Alternatively, if you need to your app to "pause" when it reaches a certain state, you need to add "debugger;" lines to areas of your code where you want those breakpoints, then start the app in debug mode.
Hope that helps.
If you are on Windows that doesn't support POSIX signals, you can use this workaround from another cmd
.
node -e "process._debugProcess(PID)"
launch.json
configuration or create new by clicking on the wheel { "type": "node", "request": "attach", "name": "Attach to 9229", "port": 9229 },
"build"
folder where the index.js
is. cmd
or git-bash
and run this command,21392
is the PID of your process. node -e "process._debugProcess(21392)"
Everything should be ready now.
Even it's an old yet answered question, there is an easier way, which is passing parameters to node:
forever start -c 'node --debug-brk' main.js
If you don't want to wait for debugger to be attached, replace --debug-brk
by --debug
To inspect nodejs and debug it, use this command
forever -w -c 'node --inspect=IP:PORT' file.js
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.