Node.js: How to attach to a running process and to debug the server with a console?

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.


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.


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
  • If you can access the server from a browser, you can use chrome://inspect on http://host.domain:9229 .
  • If you cannot connect via a browser (ie the server is in a firewalled production cluster), you can activate a REPL to inspect over the command line:

    node inspect -p <node-pid>
    
  • 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.

    链接地址: http://www.djcxy.com/p/52688.html

    上一篇: 调试节点,什么使它保持运行?

    下一篇: Node.js:如何附加到正在运行的进程并使用控制台调试服务器?