2009-03-16 13 views
38

Sto impostando i breakpoint in un file JS esterno e non sono stato in grado di ottenere Firebug per colpire il punto di interruzione in modo coerente. Funziona a volte ma la maggior parte delle volte non lo fa. L'unico modo per farlo funzionare è attivare "Interrompi tutti gli errori"Firebug - Il punto di interruzione non ha colpito

Ho usato il debugger; dichiarazione anche senza fortuna.

+0

Funziona nel debugger integrato di Firefox? – NoBugs

risposta

6

Firebug mostra il codice nella scheda Script con i numeri di linea verde? Questo indica linee di codice debuggabili.

Ho riscontrato questo sintomo in cui nessuno dei numeri di riga era verde a volte. Rinnovo la pagina e magicamente, sono di nuovo verdi.

+0

No, l'aggiornamento della pagina non aiuta. Non hanno numeri di linea verde pure. – DotnetDude

15

Se i numeri di riga non sono verdi, sembra che Firebug non possa eseguire il debug di quella parte di codice perché è fuori ambito. Quindi, se stai usando qualcosa come $ (function() {...}); Firebug non sarà in grado di accedere a funzioni e variabili.

Ha senso?

Inoltre, è possibile che qualche altra funzione o qualcosa stia sovrascrivendo quella che si sta tentando di eseguire il debug. È persino possibile se stai includendo lo stesso file JS due volte.

Spero che questo aiuti.

+0

Firebug sembra spesso non rendersi conto che il codice è valido. Questo sembra accadere molto spesso nei loop while: Firebug si rifiuta di rendere verdi i numeri di riga, anche se dovrebbe. – Michael

6

Ho riscontrato questo problema molto spesso. Ho scoperto che riaprire la scheda sembra aiutare (i punti di interruzione non vanno persi). Ma "Break on all errors" sembra essere il modo più affidabile per rompere.

Raramente ho qualcosa di buono su IE, ma in questo caso va bene. Il debug di JavaScript in VS funziona. Colpisce i punti di interruzione ("debugger") senza problemi e interrompe l'esecuzione di tutti gli altri codici JavaScript sulla pagina. Quindi lo uso come back-up abbastanza spesso.

6

Ho riscontrato questo problema durante il tentativo di eseguire il debug di pagine all'interno di frame utilizzando Firebug 1.4. Selezionando "Mostra solo questo frame" o "Apri frame in una nuova scheda" dal menu di scelta rapida "Questo frame", l'aggiornamento della pagina sembra rendere i debugabili degli script.

+0

Grazie mille. Questo l'ha risolto per me. –

+0

Anche questo ha risolto il mio problema! – emurano

3

La scheda "Console" di Firebug mostra errori per uno qualsiasi degli altri JavaScript? Ho scoperto che se esistono errori JavaScript per il codice prima di un punto di interruzione di debug, non raggiungerà mai quella riga di codice finché non verranno risolti i precedenti errori.

0

Giusto per aggiungere un'altra possibilità a quelli menzionati.

Questo si è verificato quando ero sotto pressione per sistemare qualcosa in produzione, naturalmente.

avevo inadvertantely introdotto un errore di sintassi:

function: myFunc(){} 

// function body 

} 

Proprio così. All'inizio del log della console c'era un errore, ma non l'ho notato. Ho continuato a provare a eseguire il debug di quel file, ma Firebug non l'avrebbe fatto.

Quindi, se questo sta accadendo a voi: controllare la console, forse c'è un errore di sintassi cortocircuitare il caricamento del file.

2

Ho trascorso 1 ora su questo.

ho avuto un tag <script> come questo:

<!-- jQuery Validate --> 
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.min.js" type="text/javascript"> 

Riuscite ad individuare il problema?

Beh, mi ci è voluto tutto il tempo per individuarlo. Manca / per chiudere il tag <script>.

<!-- jQuery Validate --> 
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.min.js" type="text/javascript" /> 

Questo è sicuramente dovuto a qualche copia/incolla e poi cercando di modificare il codice ... Ho appena giocato il buffone in questo caso! :)

Dopo aver aggiunto il / sono riuscito a ottenere i punti di interruzione funzionanti in Firebug. Ha senso.

Finalmente posso vedere quei numeri verdi benedetti.

2

Avevo questo problema anche a intermittenza. Ho selezionato "Disattiva tutti i punti di interruzione" e "Abilita tutti i punti di interruzione" dai punti di interruzione a discesa e ha iniziato a funzionare.

+0

Salvato il mio giorno. Grazie. –

0

Per me ha funzionato dopo aver rimosso tutte le chiamate document.write().

0

Stesso problema con FF 36 e FB 2.0.8: nessun errore nella console, il codice funziona correttamente, ma FB visualizza HTML invece di JS, si ferma al punto di interruzione debugger ma lo mostra in qualche riga HTML casuale, non si ferma ai punti di interruzione regolari.

I resolved it by extracting JS from the page and moving it into its own JS file.

Ma c'era un problema: quando lo script risiedeva in un file JS, non ho potuto ottenere le variabili "globali" per lavorare in FF (ha lavorato bene in IE, indipendentemente da dove il codice è stato), anche usando la sintassi window.varName. Così finì il debugging in FB da un file separato, ma tornò in linea per la produzione.

0

Ho avuto anche questo problema. Forse correlato alla risposta di KIT-Inwi ... Ma stavo generando righe casuali usando PHP con ogni carico di pagina.

Firebug sembra ricordare il numero riga della intera pagina HTML di mettere il punto di interruzione alla, non necessariamente la linea del Javascript, il che significa che il numero di riga mettere il punto di interruzione a questa pagina carico non sarà necessariamente la stessa riga di codice la prossima volta che la carichi, quindi il punto di interruzione sembrerà "saltare".

Non sono sicuro di come lo risolverai con contenuti dinamici che cambiano ogni volta, ma l'ho risolto rimuovendo le righe casuali in modo che la linea con il punto di interruzione fosse la stessa su ogni caricamento della pagina.