4

ノード実行可能プレフィックスなしでコマンドラインから直接実行できるように、グローバルにインストールしたいNodeJsモジュール「some-module」があります。つまり$> some-module [args]、これらの引数の 1 つを にしたいと思います--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 )

V8 デバッガーは、コマンドライン フラグを使用して Node.js を開始するか--debug、既存の Node.js プロセスにSIGUSR1.

私はこれをやってみました:

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 でデバッグしたいと思います。

4

1 に答える 1

0

あなたの質問を理解できたかどうかはよくわかりませんが...

おそらく、アプリをグローバルにインストールし、npmを使用してブレークポイントで停止させることができます。入力package.json

...
"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 

デバッガーでそこで停止します(:これはノードインスペクターと同じではありません。これがノードインスペクターで実現できるかどうかはわかりません)。

これを行う理由がよくわかりませんが、これが役立つことを願っています。

于 2012-04-04T19:16:05.743 に答える