2010-09-03 19 views
11

Ho un sistema che è costruito utilizzando la libreria ext-js. Parte del sistema elenca gli ordini che fluiscono attraverso un negozio online. Quando si fa clic su una riga, vengono visualizzati ulteriori dettagli sull'ordine. Pochi giorni fa, un messaggio che dice "FIXME: creato panelID ..." ha cominciato ad apparire, non appena una riga viene cliccato. Dopodiché, il normale funzionamento continua, cioè il messaggio di errore è solo fastidioso e non rompe la normale esecuzione dopo che appare.eseguire il debug di codice JS che fa scattare un allarme()

Sto cercando di eseguire il debug del codice JS per vedere in quali circostanze viene visualizzato il messaggio di errore, ovvero perché improvvisamente ha iniziato a comparire. Sto cercando di farlo con FireBug. Qualcuno ha qualche consiglio che potrei usare per raggiungere il mio obiettivo di stabilire quale riga di codice attiva l'avviso()? Qualsiasi input sull'argomento è molto apprezzato.

risposta

15

Firebug ha un'API riga di comando per creare programmazione punti di interruzione. Per esempio:

debug(fn); 

crea un punto di interruzione alla funzione fn. Purtroppo questo non può essere utilizzato per le funzioni con codice nativo (funzioni built-in come alert). Tuttavia, puoi usare questo trucco.

Inserire un blocco di script nel codice con questo Script-

window.alert_ = window.alert; 
window.alert = function() { 
    alert_.apply(window,arguments) 
}; 

Quello che hai fatto è quello di ridefinire window.alert con il proprio, che fa la stessa cosa.

Ora fissare il punto di interruzione in Firebug con:

debug(alert); 

Ora la prossima volta che uno script chiama avviso, si otterrà un punto di interruzione nella funzione. È quindi possibile analizzare la traccia dello stack e scoprire da dove viene chiamato.

+0

devo dire, questo è dannatamente brillante !! Non ero a conoscenza del fatto che questo tipo di cosa potesse essere fatta. Il tuo un campione! :) – doz87

1

Se è possibile ricrearlo, è sufficiente inserire un punto di interruzione nella riga in cui viene visualizzato l'avviso e visualizzare la traccia dello stack e individuare il percorso.

Se non è possibile ricrearlo, è necessario trovare dove l'allarme proviene. Dopo quello sguardo, quello che chiama quel metodo e vede quali valori devono essere impostati. Cammina lungo il percorso fino a trovare l'evento click.

non c'è una risposta vera sul debug JavaScript poiché ogni applicazione è codificata in modo diverso. Un sacco di tempo è lavoro manuale di camminare attraverso il codice e capire quale percorso ci vuole. Aggiungere orologi, console.log e avvisi sarà tuo amico nel capire gli stati variabili. Aggiungi punti di rottura e cammina attraverso il codice.

+0

Grazie per l'input. Sto cercando di fare quello che Chetan Sastry ha proposto. Sto ricevendo "troppa ricorsione" che cercherò di capire da solo. –

3

Ecco versione più cross-browser di risposta @ di Chetan

 window.alert_ = window.alert; 
     window.alert = function() { 
      debugger; 
      alert_.apply(window, arguments); 
     }; 
Problemi correlati