2015-05-07 23 views
6

Ho alcune domande relative al seguente javascript stacktrace.Comprensione di uno stacktrace javascript di cromo

  1. Perché ci sono due parti nello stacktrace: una prima in rosso in alto e una in nero in basso?
  2. Che cosa significa la prima riga che inizia con at? Ad esempio at angular.js:63: perché non si riferisce a una chiamata di funzione/metodo come le altre linee?
  3. Come viene ordinato? Le linee in basso si presentano prima delle linee in alto?

javascript stacktrace

+0

Non rispondere veramente alla domanda, ma questo errore è probabilmente causato dal fatto che si chiami '$ scope. $ Apply' da qualche parte. – Cerbrus

+0

Lo è davvero. Ma volevo davvero informazioni sulla struttura di uno stacktrace in generale piuttosto che una soluzione per evitare questo stacktrace. Grazie comunque. – balteo

+0

Ho pensato tanto, ecco perché ho fatto un commento. – Cerbrus

risposta

3
  1. I bit in rosso sono il messaggio di eccezione/errore - in questo caso sembra che angolare ha generato un'eccezione e come parte di tale eccezione si è aggiunto il contenuto del stacktrace a il messaggio, mentre i bit neri sono la traccia dello stack che si otterrebbe ogni volta che il browser presenta un'eccezione non gestita.
    1. La prima linea presso gli Stati in cui l'errore si è verificato - il nome dello script e numero di linea - se si dà un'occhiata alla fonte della angular.js alla linea 63 si vedrà l'affermazione che ha generato l'eccezione.
    2. Non si riferisce a una chiamata di funzione in quanto è l'istruzione che ha generato l'eccezione. L'unico modo per arrivare a questa affermazione è attraverso una serie di chiamate di funzione, che vengono quindi mostrate in ordine inverso.
  2. Corretto. Per esempio la funzione Scope.$apply effettua una chiamata a Scope.$eval e Scope.$eval chiama una funzione chiamata callback, ecc

+0

Grazie phuzi. Non sono ancora sicuro del punto 1 e 2 ... Puoi fornire maggiori dettagli? – balteo

+0

@balteo Aggiornato la mia risposta. – phuzi

1

Chrome utilizza V8 a lavorare su JavaScript. Così, sto citando il seguente link per risposta - https://code.google.com/p/v8-wiki/wiki/JavaScriptStackTraceApi

  1. io non sono sicuro di risposta a questa domanda.

  2. La prima riga indica la posizione in cui si è verificato l'errore. Con un framework come angolare, potrebbe essere in profondità all'interno del framework, non è necessario che sia il codice utente.

  3. Sì, è verso il basso, cioè dal punto in cui si è verificato l'errore verso l'alto verso il chiamante, in questo caso a un invio di eventi jQuery.

+0

Grazie per il link Siva. – balteo

+0

siete i benvenuti @balteo. –

Problemi correlati