我使用'forever'来运行我的应用程序。我想附加到运行环境来检查我的应用程序。那我该怎么办?
答案 0 :(得分:42)
来自http://nodejs.org/api/debugger.html:
高级用法
可以通过使用--debug命令行标志启动Node或通过发送信号来启用和访问V8调试器 使用SIGUSR1的现有Node流程。
找到node
进程的PID,然后发送SIGUSR1
应该做的诀窍:
kill -s SIGUSR1 nodejs-pid
然后运行node-inspector
并浏览到它指示的URL。更多信息this tutorial。
答案 1 :(得分:7)
从节点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
是用于调试节点进程的单独工具。但是,正如在其自己的页面上所记录的那样,它主要被弃用,因为现在捆绑的调试器被主动维护并提供更高级的功能。有关此更改的详细信息,请参阅this thread。
答案 2 :(得分:5)
您可以在应用中添加REPL。例如,如果您添加REPL以侦听localhost端口5001,则可以照常启动应用程序并使用telnet登录:telnet localhost 5001
。这将带您到一个提示,您可以直接与您的应用程序进行交互。
或者,如果您的应用需要在达到某个状态时“暂停”,则需要添加“调试器”;将代码区域划分到您想要这些断点的代码区域,然后以debug模式启动应用程序。
希望有所帮助。
答案 3 :(得分:2)
如果您使用的Windows不支持POSIX信号,则可以从另一个 cmd
使用此替代方法。
node -e "process._debugProcess(PID)"
launch.json
配置或通过单击方向盘来创建新配置{
"type": "node",
"request": "attach",
"name": "Attach to 9229",
"port": 9229
},
node -e "process._debugProcess(21392)"
现在一切都准备就绪。
答案 4 :(得分:1)
对我来说,运行节点版本6.9.10我不得不:
kill -USR1 <node-pid>
然后
node debug -p <node-pid>
此版本的节点node inspect -p <node-pid>
命令失败。
答案 5 :(得分:0)
即使这是一个陈旧但已回答的问题,有一种更简单的方法,即将参数传递给节点:
forever start -c 'node --debug-brk' main.js
如果您不想等待附加调试器,请将--debug-brk
替换为--debug
答案 6 :(得分:0)
要检查nodejs并对其进行调试,请使用此命令
forever -w -c 'node --inspect=IP:PORT' file.js