2015-05-07 2 views
6

У меня есть несколько вопросов относительно следующего javascript stacktrace.Понимание хром javascript stacktrace

  1. Почему в стеке есть две части: первая в красном сверху и вторая в черном внизу?
  2. Что означает первая строка, начинающаяся с at? то есть at angular.js:63: почему это не относится к вызову функции/метода, как к другим линиям?
  3. Как это заказать? Строки внизу появляются перед линиями вверху?

javascript stacktrace

+0

Не совсем ответив на вопрос, но эта ошибка, вероятно, вызвана тем, что вы вызываете '$ scope. $ Apply' где-то. – Cerbrus

+0

Это действительно так. Но мне действительно нужна информация о структуре stacktrace в целом, а не о решении избежать этого stacktrace. Спасибо, в любом случае. – balteo

+0

Я так много думал, поэтому я сделал комментарий. – Cerbrus

ответ

3
  1. Биты красным, сообщение об отклонениях/ошибка - в данном случае это выглядит как угловому выбросило исключение и в рамках этого исключения он добавил содержимое StackTrace в сообщение, в то время как черные биты - это трассировка стека, которую вы получите всякий раз, когда браузер сталкивается с необработанным исключением.
    1. Первая линия в штатах, где случилась ошибка - имя скрипта и номер строки - если вы посмотрите на источник angular.js в строке 63 вы увидите, что заявление повергло исключение.
    2. Это не обращение к вызову функции, так как это заявление, в котором было исключение. Единственный способ получить это утверждение - это серия вызовов функций, которые затем отображаются в обратном порядке.
  2. Исправить. Например, функция Scope.$apply делает вызов Scope.$eval и Scope.$eval вызывает функцию с именем callback и т.д.

+0

Спасибо phuzi. Я все еще не уверен в пунктах 1 и 2 ... Можете ли вы предоставить более подробную информацию? – balteo

+0

@balteo Обновлен мой ответ. – phuzi

1

Chrome использует v8 двигатель работать на JavaScript. Итак, я цитирую следующую ссылку для ответа - https://code.google.com/p/v8-wiki/wiki/JavaScriptStackTraceApi

  1. Я не уверен, что ответ на этот вопрос.

  2. В первой строке указывается место, где произошла ошибка. С каркасом, подобным угловому, он может быть глубоко внутри фреймворка, в котором он не должен быть пользовательским кодом.

  3. Да, это снизу вверх, то есть с того места, где произошла ошибка, направленная вверх к вызывающему, в этом случае к отправке события jQuery.

+0

Спасибо за ссылку Шива. – balteo

+0

добро пожаловать @balteo. –

Смежные вопросы