Node.js 如何从运行的应用程序中获取nodejs的源代码
我无意中删除了nodejs应用程序的源代码,但该应用程序正在运行,所以如何从运行的应用程序中获取源代码Node.js 如何从运行的应用程序中获取nodejs的源代码,node.js,Node.js,我无意中删除了nodejs应用程序的源代码,但该应用程序正在运行,所以如何从运行的应用程序中获取源代码 我希望源代码已经缓存在某个目录中。也许有一种方法可以使用Nodejs调试器检索一些源代码 假设使用Linux操作系统,则需要获取应用程序的进程id: $ ps -e | grep node 接下来,您将在调试模式下输入应用程序,如下所示: $ kill -s USR1 PID 其中PID是节点应用程序的PID 然后启动调试控制台: $ node debug -p PID 如果您有应用程
我希望源代码已经缓存在某个目录中。也许有一种方法可以使用Nodejs调试器检索一些源代码 假设使用Linux操作系统,则需要获取应用程序的进程id:
$ ps -e | grep node
接下来,您将在调试模式下输入应用程序,如下所示:
$ kill -s USR1 PID
其中PID是节点应用程序的PID
然后启动调试控制台:
$ node debug -p PID
如果您有应用程序控制台,您将看到:
Starting debugger agent.
Debugger listening on port 5858
在调试控制台中,您应该看到一个调试提示,您可以使用以下命令获取可用命令:
debug> help
我可以使用list命令显示一些正在运行的应用程序源:
其中NUMBER_OF_LINE是要显示的源代码行数
我不确定这是否是您的一次性尝试,因为我的源代码没有被删除。希望您能得到一些结果。我通过附加调试器(如建议的那样)恢复了完整的文件 要实际恢复代码,请执行以下操作:
setBreakpoint('app.js',10)
,其中10是您知道将在运行过程中再次运行的代码行
暂停
,然后说下一步
,直到要恢复的脚本暂停
list(5000)
,其中5000是要列出的任意长的行数
希望这对以后遇到这一独特问题的人有所帮助,因为我花了几个小时才弄明白。应该使用源代码管理它现在在nodejs内存中。无法想象您将如何从进程外部将其从内存中取出。是否有任何方法可以保护脚本不受此影响?我的意思是,如果我正在导入加密脚本,调试器会显示正在运行/解密的版本,这可以避免吗?
debug> list(NUMBER_OF_LINE)