2009-10-01 22 views
7

Che diavolo potrebbe causare questo ...visual studio 2008 pazzo debugger saltando!

Sto sviluppando la mia app Web ASP.NET MVC C# 3.5, come faccio tutto il giorno tutti i giorni. Non fare nulla di intelligente, solo metodi standard su classi che chiamano altri metodi ...

Costruisco il mio progetto, accendo un URL in Chrome e ottengo la risposta che mi aspetto. Allego il debugger a w3wp.exe, impostando un punto di interruzione e f5 in Chrome. Il debugger si arresta al punto di interruzione come mi aspetterei ....

Ho premuto f11 per scorrere il codice e si sposterà alla riga/riga di riga successiva, fallo alcune volte e salterà casualmente a una linea arbitraria nel percorso di esecuzione !!!

La riga che salta è una linea che sarebbe stata eseguita, non salta a nessuna vecchia linea, decide solo di saltare un intero gruppo di righe tra ?? !!!

Non l'ho mai visto prima, come diavolo faccio il debug su cosa sta succedendo ???

Per un po 'ho pensato che forse Chrome stava facendo due richieste, e il debugger non sta davvero saltando, si sta semplicemente scambiando tra thread di richiesta che lo fanno sembrare come se facesse il salto, ma non è così! Se i impostare un punto di interruzione su ogni singola riga posso parzialmente impedirlo, ma prendere il seguente:

1. public string Method() 
2. { 
3.  string s; 
4.  s = OtherMethod(); 
5.  return s; 
6. 
7. } 

il tipo di comportamento im vedere (con un punto di interruzione ogni riga sopra) è 1,2,3,4 , 5,6,7 (ovvero non passa in OtherMethod();

Altro comportamento in cui viene visualizzato è 1,2,3 e quindi, torna indietro a qualsiasi metodo chiamato() o anche più lontano: s

Grazie

+0

Debug/release? ____ – EFraim

+0

debug mode______ –

risposta

6

Hai provato a pulire la tua soluzione?
- (le cartelle bin e obj nella cartella del progetto)

Eliminare i file dalla cartella dei file temporanei di asp.net?

  • (in genere C: \ windows \ Microsoft.NET \ Framework \ v2.0.50727 \ ASP temporaneo.NET File)
  • Probabilmente sarà necessario eseguire "iisreset/stop" al prompt dei comandi, poi riattivare con iisreset/start
+0

dove si trova? –

+0

facendo tutto questo e i suggerimenti di Atom sembra averlo risolto, grazie –

+0

come risposta? – Sameer

0

Sembra che tu stia cercando di passare attraverso un binario che è stato ottimizzato. ottimizzatore può fare un sacco di cose che lo rendono difficile eseguire il debug compreso ma non limitato a:

  • dichiarazioni Riordinamento
  • funzioni inline
2

Non sono sicuro se questo aiuterà. Ho riscontrato problemi prima che il codice compilato in un assembly correlato non corrisponda a ciò che il debugger pensa che io abbia. Il modo in cui ho sempre risolto era quello di arrestare l'arresto di VS, quindi riavviare e ricaricare il progetto, quindi eseguire una ricostruzione completa della soluzione. Quindi cambia la modalità di compilazione da debug-> release o release-> debug e fai un'ultima ricostruzione. Onestamente non ho mai capito cosa lo causa. Succede solo occasionalmente.

+0

facendo tutto questo e i suggerimenti di Jeff sembra averlo risolto, grazie –

0

che ho visto qualcosa di simile in 2.0 quando non lo faccio assicurati che la cache del mio browser sia chiara.

0

Attivare lo smontaggio e vedere se il passo ha più senso. Se sei sicuro di non saltare tra i thread, il compilatore probabilmente ha deciso che parte del tuo codice non è abbastanza importante da passare (cioè non fa nulla).

Problemi correlati