私はそうのように、ノードのクライアントデバッガを使用します(「child_processを必要=子プロセスでNode.jsコマンドラインデバッガを使用しますか?
するvar子を:
ノードのデバッグmyscript.js
しかし、このプロセスが使用して子を生成します").fork(cmd、args);
この子供が「デバッグ」モードで起動する方法はありますか?
私はそうのように、ノードのクライアントデバッガを使用します(「child_processを必要=子プロセスでNode.jsコマンドラインデバッガを使用しますか?
するvar子を:
ノードのデバッグmyscript.js
しかし、このプロセスが使用して子を生成します").fork(cmd、args);
この子供が「デバッグ」モードで起動する方法はありますか?
問題ありません。実行するプロセスにデバッグSigを送信するだけです。私はどのようにデバッグ-BRKを行うにはあなたを教えてcan`t私はあなたができることを確認していない、デバッグモード
を有効にするために見つけるかのノード・インスペクタのドキュメントを見ていますが、常に
ようなコードから何かを行うことができますwhile(true){debugger}
デバッグステートメントをキャッチして、ループから手動で脱出することができます。汚い知っている=)
はい。新しいポートでプロセスを起動する必要があります。クラスタでデバッグするための回避策があり、同じようにあなたが行うことができます:
var debug = process.execArgv.indexOf('--debug') !== -1;
if(debug) {
//Set an unused port number.
process.execArgv.push('--debug=' + (5859));
}
var child = require("child_process").fork(cmd, args);
.... デバッガがポートで待機して5859
私はchild_processモジュールをprocessというローカル変数に影響を与え、ノードプロセスのグローバル変数を隠してしまったので、これで苦労しました。したがってprocess.execArgvは定義されていませんでした。 Beawareの "process"はノードのグローバル変数です! –
ここでは別の方法があります、これは上の子のデバッグを行いますフリーポート:
// Determine if in debug mode.
// If so, pass in a debug-brk option manually, without specifying port.
var startOpts = {};
var isInDebugMode = typeof v8debug === 'object';
if(isInDebugMode) {
startOpts = {execArgv: ['--debug-brk']};
}
child_process.fork('./some_module.js', startArgs, startOpts);
これは私のためにはうまくいきませんでした。execArgv.push( ' - debug =' +(5303 + processId ++))のように、未使用のポートでリスンするよう明示的に指示する必要があると思います。 –
@ davidforneronの答えが正しい –
メインプロセスがデバッグモードである場合はmyscriptをチェックし、 '--debug'を' args'の1つとして渡すことができます。 – loganfsmyth
であり、デフォルトでは親プロセスデバッガ –
が--debug、--debug = 5859(新しいポート)がforkしてcmdまたはargsの結果がエラーになっているので、デバッガポートを変更することを忘れないでください。これは、--debugがforkされているプロセスではなく、Nodeプロセスのオプションであるためだと思います。他のアイデア? – user836003