2010-10-29 10 views
8

Ho problemi a eseguire il debug di qualsiasi sito Web ASP Classic sulla mia workstation utilizzando uno degli ambienti di debug MS disponibili. Sono su Win XP SP3, utilizzando IIS 5.1 integrato.Debugger su una riga errata durante il debug di Classic Asp

È iniziato poche settimane fa e si verifica su più progetti. Qualcosa è cambiato chiaramente nel mio ambiente, perché funzionava bene in passato, anche nei recenti IDE, purché I Attach venisse processato. Quindi si è rotto come descritto di seguito. Mi ero arreso, ma ho iniziato a lavorare su un nuovo progetto di recente, ho provato a eseguire il debug e ha funzionato! Oggi, però, si ritorna allo stesso comportamento interrotto:

Quando provo a impostare un punto di interruzione, l'IDE imposta effettivamente il punto di poche righe sopra o sotto la linea su cui ho fatto clic. Sto cercando di impostare il punto di interruzione su linee che sono interamente codice lato server, quindi non è perché sta saltando prima o dopo HTML con pepite di codice incorporate. Occasionalmente non imposterà il breakpoint, dandomi un'icona di breakpoint vuota e presentando un errore che dice che non c'è alcun codice eseguibile sulla linea.

Quando si allega al processo IIS (inetinfo.dll, poiché sono in esecuzione in modalità di isolamento basso), il punto di interruzione potrebbe non essere raggiunto. Se lo è, e avvio a passo singolo, la linea selezionata salta e non atterra su ogni linea continua nella sorgente, né segue le strutture di controllo come previsto. Le variabili controllate non vengono aggiornate come previsto. È chiaramente visto un codice diverso da quello che faccio per gli stessi numeri di linea.

Lo stesso comportamento si verifica se mi carica la pagina in un browser e

  • connettersi al processo da VS2010, impostare un punto di interruzione e aggiornare la pagina, o
  • impostare il punto di interruzione, connettersi al processo e aggiorna, oppure
  • aggiungi un'istruzione "stop" nella mia fonte e aggiorna la pagina. In tal caso, mi viene presentata una lista di debugger disponibili, e ognuno di essi fa esattamente la stessa cosa: salta le linee di codice SAME e segue i percorsi SAME 'errati'. Ho provato VS2010, 2008, 2005, 2003 e Microsoft Script Debugger.

Sembra che il codice sorgente non sia sincronizzato con ciò che il debugger sta passando. Mi sono assicurato che "Richiede che i file di origine corrispondano esattamente alla versione originale" sia impostato in VS> Strumenti> Opzioni> Debug> Generale

E, naturalmente, questi sono siti ASP Classic - non c'è codice compilato, quindi la sorgente che vedo nell'IDE dovrebbe essere la stessa di quello che sta eseguendo il debugger. Non è specifico per un progetto - sta accadendo su almeno due progetti completamente separati al momento. E sta succedendo su più macchine: ho distribuito il mio progetto su un server di test e ho provato a eseguire il debug e ho ottenuto lo stesso comportamento.

ho trovato alcune informazioni sui problemi simili dal suono relativi ai file UTF-codificati contenenti caratteri non ANSI (sapete, quelli utilizzati Unicode per supportare!) here, here e here, ma sono andato attraverso la mia fonte e non riesco a trovare alcun file simile.

Qualche idea? Grazie!

risposta

8

Le uniche volte che ho visto questo sono quando un progetto è stato impostato per creare in modalità di rilascio anziché in modalità di debug.

Quanto è facile controllare dipende dalla configurazione IDE, potrebbe già essere presente nella barra degli strumenti, ma in caso contrario.

  1. Fare clic destro sulla soluzione
  2. Select Configuration Manager ...
  3. Assicurarsi che Debug sia selezionato nella "configurazione Active soluzione" discesa
+0

No, ho già controllato: ho solo una configurazione Debug nel progetto al momento sto lavorando. E, ancora, non c'è un passaggio 'compile' per richiamare la configurazione: è sufficiente salvare il file .ASP e aggiornare il browser. Grazie, comunque! – Val

+0

Questo problema si verifica sulla macchina di qualcun altro? In tal caso, controlla le impostazioni di costruzione del progetto per assicurarti che stia producendo le giuste informazioni di debug. Suppongo che tu abbia provato a ricostruire? Se non funziona, probabilmente mi limiterò a gettare le mani in aria, a urlare e quindi a reinstallare VS. – knightpfhor

+0

Non c'è niente da costruire, ma ho fatto una ricostruzione comunque, senza alcun effetto. Vedrò se riesco a riprodurmi su un'altra macchina, comunque ... buona idea! Non penso sia solo VS - succede in tutte le versioni di VS, oltre a MS Script Debugger, quindi viene invocato un componente comune ... – Val

2

Ho avuto lo stesso problema in VS2008 . La conversione del file asp in codifica ANSI (con Notepad ++) lo ha risolto.

2

C'è sicuramente un problema con la codifica. Il file era in ANSI e io mi sono convertito in un altro formato e sono tornato all'ANSI e ho risolto il problema. Fai attenzione perché potresti perdere caratteri speciali cambiando la codifica.

+0

Vorrei aggiungere che è anche necessario controllare la codifica di tutti i file inclusi dallo script con '' direttiva. –

0

Ciò si verifica ancora in VS2010.

Quello che ho trovato per aggirarlo, è selezionare Release vs Debug. Ricostruisci il progetto. Tornare a Debug e boom.

Siete tutti sincronizzati di nuovo.

3

Nel mio caso si trattava di lineover errati nel file sourcecode. VS si aspetta \ x0D \ x0A ma avevo solo \ x0D. C'è un'impostazione sotto Opzioni -> Ambiente -> Documento -> qualcosa con la fine della linea (non uso vs in inglese quindi posso solo indovinare). Il controllo di questa opzione ha risolto il problema 4 di me.

2

Ho avuto un extra ; nel mio file prima di un commento. Non ho idea di come questo causi il problema, ma rimuoverlo sembra aver sistemato le cose.

+1

RISPOSTA PIÙ UNDERRATA DEI FOLLER DELL'ANNO +1. Possedeva un file .c di oltre 80.000 righe e al momento di posizionare i breakpoint il programma interrompeva migliaia di linee. Passerebbe attraverso la logica giusta ma non mostrerebbe mai la giusta posizione. Trovare queste pepite ; // in piedi da sole e rimuoverle risolverlo. – Sean