将堆栈跟踪引用添加到现有的无上下文错误对象

时间:2015-05-08 20:29:31

标签: javascript node.js v8

我一直在从库调用中返回错误,但是错误的堆栈跟踪没有保留完整的堆栈跟踪,因此很难找到完全这里正在崛起。

我想找出一种方法来添加对这个错误的堆栈跟踪的访问位置/文件的引用。我可能无法捕获顶级函数名称,但即便如此,如果我能得到错误处理程序的行号,那么就足以指出我正确的方向。

在修补它之后,我相信我可能有一个相当hacky的解决方案可能会起作用(虽然它在我的生产环境中未经测试)。

var addStackFrame = function(e) {
  var splitStack = e.stack.split("\n");

  // We splice from the 3rd element to drop
  // the error name, and addStackFrame() reference.
  var thisLine = new Error().stack
                  .split("\n")
                  .slice(2, 3)
                  .join('\n');

  e.stack = [splitStack[0], thisLine]
            .concat(splitStack.slice(1))
            .join("\n");

  return e;
};

此日志添加了调用Error对象的堆栈跟踪的最后三个方法。

我也看到this question表明可能有一种原生的V8实现方式,我更感兴趣的是使用它。

是一种本地添加对现有Error对象的堆栈跟踪的引用的方法吗?除此之外,是否有更优雅的方法来处理向堆栈跟踪添加上下文?

0 个答案:

没有答案