理解 chrome javascript stacktrace

问题描述 投票:0回答:2

我对以下 javascript 堆栈跟踪有一些疑问。

  1. 为什么堆栈跟踪有两个部分:第一个部分在顶部为红色,第二个部分在下面为黑色?
  2. 第一行以
    at
    开头是什么意思?即
    at angular.js:63
    :为什么它不像其他行那样引用函数/方法调用?
  3. 如何订购?底部的线条出现在顶部的线条之前吗?

javascript stacktrace

javascript google-chrome-devtools stack-trace
2个回答
3
投票
  1. 红色位是异常/错误消息 - 在这种情况下,Angular 看起来抛出了一个异常,并且作为该异常的一部分,它已将堆栈跟踪的内容添加到消息中,而黑色位是堆栈跟踪每当浏览器遇到未处理的异常时,您都会收到此消息。
    1. 第一行指出发生错误的位置 - 脚本名称和行号 - 如果您查看第 63 行
      angular.js
      的源代码,您将看到抛出异常的语句。
    2. 它不是指函数调用,因为它是引发异常的语句。到达该语句的唯一方法是通过一系列函数调用,然后这些函数调用以相反的顺序显示。
  2. 正确。例如,

    Scope.$apply
    函数调用
    Scope.$eval
    ,而
    Scope.$eval
    调用名为
    callback
    的函数,等等。


1
投票

Chrome 使用 v8 引擎来处理 JavaScript。因此,我引用 v8.dev 文档 作为答案:

  1. 我不确定这个问题的答案。

  2. 第一行告诉我们错误发生的位置。使用像 Angular 这样的框架,它可以深入框架内部,而不需要是用户代码。

  3. 是的,它是自下而上的,即从发生错误的点向上到调用者,在本例中是到 jQuery 事件调度。

© www.soinside.com 2019 - 2024. All rights reserved.