在JavaScript中获取当前堆栈跟踪

时间:2017-04-05 16:37:27

标签: javascript node.js

如何从JavaScript打印堆栈跟踪?

答案How can I get a Javascript stack trace when I throw an exception?涉及抛出异常,但我需要打印堆栈跟踪来调试内存泄漏。

基本上我与Get current stack trace in Java有相同的问题,但对于JavaScript。

而且How to print a stack trace in Node.js?类似,但它是Node.js,我想知道JavaScript,更一般地说,如果它不同。

3 个答案:

答案 0 :(得分:11)

这行代码获取堆栈跟踪并打印出来:

console.trace();

来源:https://developer.mozilla.org/en-US/docs/Web/API/Console/trace

答案 1 :(得分:1)

documentation说可以通过以下方式完成:

const targetObject = {};
Error.captureStackTrace(targetObject);
targetObject.stack;  // Similar to `new Error().stack`

此代码段在targetObject上创建一个.stack属性,该属性在访问时返回一个字符串,该字符串表示在代码中调用Error.captureStackTrace()的位置。

答案 2 :(得分:0)

您可以通过创建错误并打印其stack属性来获取堆栈跟踪。

print(Error().stack);

这与console.trace()不同,即使在您的环境中console类都不可用的情况下,它也适用于所有情况。 (当然,如果print不可用,则可以使用console.log或环境中的其他任何打印功能。)