console.trace()函数只记录当前函数,而不是整个堆栈跟踪



我在调试代码和控制台时遇到了麻烦。跟踪函数的行为似乎很奇怪。

我有一个代码,如:

func1() {  
console.trace("hey");  
}  

func2() {  
func1();  
}
func2();

结果日志如下所示:

"hey"  
func1 @ script.js:2

如您所见,这并没有真正的帮助。如何解释这种行为呢?

虽然我不确定为什么console.trace()的行为是这样的,但我确实找到了一个解决方案,因为我需要适当的堆栈跟踪。简单地用console.log(..., (new Error()).stack)替换所有的console.trace(...)调用导致堆栈跟踪工作,有时更详细。

在您的示例中,控制台的行为。跟踪([信息][…args)

const func1 = () => {
console.trace("hey");
}
const func2 = () => {
func1();
}
func2();
这里

  1. func2被称为
  2. func2调用func1
  3. func1程序停止并发出堆栈跟踪。
Trace: hey 
at func1 (/script.js:2:11)
at func2 (/script.js:6:3)
  • 从上面的错误可以看出,func1被func2调用了。

  • 由此我们了解了哪些函数相互调用。

  • 我们还可以在

    上看到函数存在的行号和文件
  • 最上面一行是我们传递的错误信息。

  • 堆栈跟踪帮助我们了解导致错误的步骤。

  • 现在我们知道堆栈跟踪是在func1中生成的。

  • 这就是为什么func1显示在顶部。这将使我们的整个调试过程更容易。

请参考:

  1. https://nodejs.org/api/console.html consoletracemessage-args
  2. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/Stack

相关内容

  • 没有找到相关文章

最新更新