2012-02-29 5 views
7

私はそうのように、ノードのクライアントデバッガを使用します(「child_processを必要=子プロセスでNode.jsコマンドラインデバッガを使用しますか?

するvar子を:

ノードのデバッグmyscript.js

しかし、このプロセスが使用して子を生成します").fork(cmd、args);

この子供が「デバッグ」モードで起動する方法はありますか?

+0

メインプロセスがデバッグモードである場合はmyscriptをチェックし、 '--debug'を' args'の1つとして渡すことができます。 – loganfsmyth

+0

であり、デフォルトでは親プロセスデバッガ –

+0

が--debug、--debug = 5859(新しいポート)がforkしてcmdまたはargsの結果がエラーになっているので、デバッガポートを変更することを忘れないでください。これは、--debugがforkされているプロセスではなく、Nodeプロセスのオプションであるためだと思います。他のアイデア? – user836003

答えて

0

問題ありません。実行するプロセスにデバッグSigを送信するだけです。私はどのようにデバッグ-BRKを行うにはあなたを教えてcan`t私はあなたができることを確認していない、デバッグモード

を有効にするために見つけるかのノード・インスペクタのドキュメントを見ていますが、常に

ようなコードから何かを行うことができますwhile(true){debugger}

デバッグステートメントをキャッチして、ループから手動で脱出することができます。汚い知っている=)

3

はい。新しいポートでプロセスを起動する必要があります。クラスタでデバッグするための回避策があり、同じようにあなたが行うことができます:

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

+0

私はchild_processモジュールをprocessというローカル変数に影響を与え、ノードプロセスのグローバル変数を隠してしまったので、これで苦労しました。したがってprocess.execArgvは定義されていませんでした。 Beawareの "process"はノードのグローバル変数です! –

-1

ここでは別の方法があります、これは上の子のデバッグを行いますフリーポート:

// 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); 
+0

これは私のためにはうまくいきませんでした。execArgv.push( ' - debug =' +(5303 + processId ++))のように、未使用のポートでリスンするよう明示的に指示する必要があると思います。 –

+0

@ davidforneronの答えが正しい –

関連する問題