为堆栈跟踪添加值,Javascript
Add value to Stack Trace, Javascript
在 Node 中,有没有办法向堆栈跟踪添加行或值,以防下游出现错误?
我知道还有很多其他方法可以使数据可用。而且我知道跟踪并不意味着价值存储。但我想知道这个具体想法是否可行(在合理范围内)。
堆栈跟踪包含所有被调用的函数,因此这似乎是将函数作为 iIFE 添加到其中的唯一方法:
(function executedSomeCode() {
throw new Error("failure");
})();
现在您的堆栈跟踪包含:
...
at executedSomeCode
...
或者你只是编辑错误的 stack
属性:
var error = new Error();
error.stack += "\nhey, whats up?";
throw error;
经过进一步研究,我认为这是不可能的。 Javascript、V8 和 Node.js 都没有以可编辑的方式公开堆栈,这在某种程度上是有道理的。但是,我确实遇到了一些有用的链接,值得分享:
- V8 Stack Trace API ReadMe - 解释 V8 原生的跟踪方法,包括操纵堆栈长度和捕获堆栈。
- Manipulating Stack Traces - 对如何从堆栈跟踪中省略方法有很好的解释。
- Function Caller method - MDN 对 caller() 方法的解释以及如何使用它在一定程度上模拟您自己的堆栈跟踪。 (非常酷的结果)。
- Node.js Tracing API - 这有点准系统,但确实涵盖了标志。
- DIY Stack Trace - 这很可爱,从 2007 年开始,但解释了如何制作自己的堆栈跟踪。
在 Node 中,有没有办法向堆栈跟踪添加行或值,以防下游出现错误?
我知道还有很多其他方法可以使数据可用。而且我知道跟踪并不意味着价值存储。但我想知道这个具体想法是否可行(在合理范围内)。
堆栈跟踪包含所有被调用的函数,因此这似乎是将函数作为 iIFE 添加到其中的唯一方法:
(function executedSomeCode() {
throw new Error("failure");
})();
现在您的堆栈跟踪包含:
...
at executedSomeCode
...
或者你只是编辑错误的 stack
属性:
var error = new Error();
error.stack += "\nhey, whats up?";
throw error;
经过进一步研究,我认为这是不可能的。 Javascript、V8 和 Node.js 都没有以可编辑的方式公开堆栈,这在某种程度上是有道理的。但是,我确实遇到了一些有用的链接,值得分享:
- V8 Stack Trace API ReadMe - 解释 V8 原生的跟踪方法,包括操纵堆栈长度和捕获堆栈。
- Manipulating Stack Traces - 对如何从堆栈跟踪中省略方法有很好的解释。
- Function Caller method - MDN 对 caller() 方法的解释以及如何使用它在一定程度上模拟您自己的堆栈跟踪。 (非常酷的结果)。
- Node.js Tracing API - 这有点准系统,但确实涵盖了标志。
- DIY Stack Trace - 这很可爱,从 2007 年开始,但解释了如何制作自己的堆栈跟踪。