Node.js:如何附加到正在运行的进程并使用控制台调试服务器?
我用'永远'来运行我的应用程序。 我想附加到运行环境来检查我的应用程序。 那么我能做什么?
从http://nodejs.org/api/debugger.html:
高级用法
V8调试器可以通过使用--debug命令行标志启动Node或通过用SIGUSR1发信号通知现有的Node进程来启用和访问。
找到你的node
进程的PID,然后发送SIGUSR1
应该做的诀窍:
kill -s SIGUSR1 nodejs-pid
然后运行node-inspector
并浏览到它指示的URL。 更多内容在本教程中。
您可以将REPL添加到您的应用。 例如,如果添加REPL以在本地主机端口5001上侦听,则可以照常启动应用程序并使用telnet登录: telnet localhost 5001
。 这将带你到一个提示你可以直接与你的应用程序进行交互的地方。
或者,如果您需要让应用在达到特定状态时“暂停”,则需要添加“调试器”; 行到你想要那些断点的代码区域,然后以调试模式启动应用程序。
希望有所帮助。
从节点6.3开始,节点有一个内置的调试器,可以通过执行来触发(即使在生产应用程序中):
kill -USR1 <node-pid>
节点进程会吐出如下所示的内容:
Debugger listening on ws://127.0.0.1:9229/f3f6f226-7dbc-4009-95fa-d516ba132fbd
For help see https://nodejs.org/en/docs/inspector
http://host.domain:9229
上使用chrome://inspect
。 如果无法通过浏览器进行连接(即服务器位于防火墙生产群集中),则可以激活REPL以检查命令行:
node inspect -p <node-pid>
在此版本之前, node-inspector
是用于调试节点进程的独立工具。 然而,正如其自己的页面所记录的那样,由于现在捆绑的调试器被主动维护并提供更多高级功能,因此它大多被弃用。 有关此更改的更多信息,请参阅此主题。
上一篇: Node.js: How to attach to a running process and to debug the server with a console?