6

使用 console.trace 时有没有办法指定堆栈跟踪深度?我会发现这对于识别行号和文件的信息和日志级别消息特别有用

4

2 回答 2

6

您可以通过设置变量来控制收集多少堆栈帧

Error.stackTraceLimit

将其设置为 0 将禁用堆栈跟踪收集。任何有限整数值都将用作要收集的最大帧数。将其设置为 Infinity 意味着将收集所有帧。

另一种选择是使用命令行标志--stack-trace-limit

node --stack-trace-limit=50 test.js

参考:

http://code.google.com/p/v8/wiki/JavaScriptStackTraceApi

于 2012-06-15T13:24:05.583 回答
5

方法 console.trace 看起来像:

exports.trace = function(label) {
  // TODO probably can to do this better with V8's debug object once that is
  // exposed.
  var err = new Error;
  err.name = 'Trace';
  err.message = label || '';
  Error.captureStackTrace(err, arguments.callee);
  console.error(err.stack);
};

https://github.com/joyent/node/blob/master/lib/console.js#L61

因此,您似乎无法设置跟踪深度。

于 2012-06-15T13:21:21.963 回答