1

Node.jsで、スクリプトで呼び出される各関数の行番号を取得しようとしています。スクリプトで呼び出される各関数の要約を生成する方法はありますか?スクリプト内の各関数によって呼び出される行番号のリストを取得して、関数呼び出しの1つをコメントアウトできるようにします(これはまだ検索しようとしています)。

例:

function printStuff(){
    console.log("This is an example.");
}
printStuff();
printStuff();

ここで、このスクリプトのすべてのイベントの要約を取得したいと思います(スクリプトを変更せずに)。次のようになります。

calling printStuff at line 4
calling console.log at line 2
calling printStuff at line 5
calling console.log at line 2

これを可能にするテスト/デバッグツールはありますか?

4

1 に答える 1

4

正確にはあなたが探しているものではないと思いますが、あなたはそれをあなたのニーズに合わせて修正することができるはずです:

Object.defineProperty(global, '__stack', {
  get: function(){
    var orig = Error.prepareStackTrace;
    Error.prepareStackTrace = function(_, stack){ return stack; };
    var err = new Error;
    Error.captureStackTrace(err, arguments.callee);
    var stack = err.stack;
    Error.prepareStackTrace = orig;
    return stack;
  }
});

Object.defineProperty(global, '__line', {
  get: function(){
    return __stack[1].getLineNumber();
  }
});

console.log("I am running from line " + __line);

ここで議論されました

于 2012-10-20T08:34:38.970 に答える