我有一个NodeJs模块“some-module”我想要全局安装,所以它可以直接从命令行运行而不需要节点可执行前缀。即:$> some-module [args]
我希望其中一个参数为--debug
。这样做的原因是我不希望要求此模块的用户将其安装到本地目录,只是为了运行node --debug-brk node_modules/some-module/[path to entry point] [args]
。
NodeJs文档在调试的高级用法部分中说明(http://nodemanual.org/latest/nodejs_ref_guide/debugging.node.js.html)
可以通过使用
--debug
命令行标志启动Node.js或使用SIGUSR1
发送现有Node.js进程来启用和访问V8调试器。
我试着这样做:
process.kill(process.pid, 'SIGUSR1');
产生了错误:
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Unknown signal: SIGUSR1
at EventEmitter.kill (node.js:366:17)
at Object.<anonymous> (c:\dev\some-module\app.js:94:17)
at Module._compile (module.js:441:26)
at Object..js (module.js:459:10)
at Module.load (module.js:348:31)
at Function._load (module.js:308:12)
at Array.0 (module.js:479:10)
at EventEmitter._tickCallback (node.js:192:40)
如何将正在运行的进程切换到调试模式?
另外,我想用node-inspector调试给定的应用程序。
答案 0 :(得分:0)
我不太确定我是否理解你的问题,但是......
您可以全局安装应用并使用npm将其停在断点中。在package.json
put:
...
"scripts": {"start": "node --debug-brk some-module.js"},
"bin" : { "some-module" : "./some-module.js" },
...
正在运行npm start -g some-module
会在第一行中断。
然后,您可以使用node-inspector进行调试。
关于从代码中停止的部分,节点在调试器中有一个内置(这是非常基本的),但它允许这个功能。 如果你在代码中包含某个地方:
debugger;
并运行:
node debug some-module.js
它将在调试器中停止( note :这与node-inspector不同,我不知道是否可以通过node-inspector实现这一点。)
不要理解为什么要这样做,但希望这会有所帮助。