2009-03-09 14 views
11

Sto cercando di porzioni di debug dell'applicazione corrente su cui sto lavorando, ma quando provo e verificare il valore di una proprietà/variabili ottengo l'errore:Impossibile visualizzare i valori delle variabili durante il debug

Cannot evaluate expression because a thread is stopped at a point where garbage collection is impossible, possibly because the code is optimized.

Questo è solo un normale progetto ASP.NET. In alcune parti dell'applicazione posso visualizzare perfettamente proprietà e variabili. Non ho capito cosa c'è di diverso sui blocchi di codice che posso e non riesco a vedere i valori delle variabili.

risposta

10

Il problema era documented su un blog MSDN, in quanto limitazione delle dimensioni di alcuni tipi in determinate situazioni, maggiori dettagli nel collegamento. Credo che fosse 256 byte e/o la dimensione totale/il numero del numero di argomenti passati a una funzione. Mi dispiace dire che non sembra esserci una soluzione rapida, ma si spera che la voce del blog MSDN ti aiuti a identificare un modo per risolvere il tuo problema.

+1

Dubito che la limitazione a 256 byte (o il numero di argomenti) sia la ragione più comune di questo errore. L'articolo a cui si fa riferimento nell'articolo collegato, [Rules of Funceval] (http://blogs.msdn.com/b/jmstall/archive/2005/11/15/funceval-rules.aspx) fornisce una serie di altri motivi per cui questo può accadere. – kristianp

+0

Questo era anche in VS2008 RTM, quindi SP1 potrebbe averlo risolto. Inoltre, non so che esiste anche in VS2010. – CertifiedCrazy

+0

FYI, lo stesso problema esiste in VS2010. –

0

Stai facendo build di rilascio? Prova a cambiare la configurazione in "debug" e verifica se migliora.

+0

No, la configurazione della soluzione è impostata su "Debug" –

+0

Assicurarsi che tutti i progetti che fanno parte della configurazione "Debug" della soluzione siano contrassegnati come tali. Debug è solo moniker ed è possibile avere * Projects * impostato su "Release" sotto una configurazione "Debug" ampia. Confondere? Sì. –

+0

Mi sono occupato di ognuno dei miei progetti. Sono tutti impostati su "Attivo (Debug)", tuttavia li ho modificati tutti in "Debug". Ancora senza fortuna. –

0

Abbiamo lo stesso problema in due dei nostri controlli utente WinForm. In entrambi i casi i controlli utente contengono molta logica di business (2000 e 3000 righe di codice rispettivamente) e si avvalgono di più oggetti piuttosto pesanti (hanno più di 30 proprietà che vengono popolate automaticamente dal database la prima volta quando una delle proprietà sono accessibili). Quando si tenta di eseguire i metodi di convalida e salvataggio (un po 'complicati), si ottiene questo stesso messaggio quando si tenta di accedere alle proprietà dell'oggetto.

Siamo giunti alla conclusione che la dimensione e la complessità del controllo utente combinato con la dimensione e la complessità degli oggetti utilizzati e l'accesso al database condizionale diventano troppo importanti per il debugger da gestire e che probabilmente dovremmo fare solo alcuni importante refactoring per spostare la maggior parte della logica aziendale fuori dal controllo dell'utente. Sarebbe interessante sapere se il tuo problema deriva dallo stesso tipo di situazione e se fare quel tipo di refactoring fa effettivamente la differenza (non abbiamo avuto il tempo e/o il coraggio :) di farlo).

2

Questo articolo, Rules of Funceval fornisce una serie di motivi per cui ciò può verificarsi. Se il debug è attivo e l'ottimizzazione è già disattivata, sembra che non ci sia molto altro da fare su questo problema.

+0

Bel articolo, grazie! –

Problemi correlati