2009-03-09 14 views
11

Próbuję porcjach debugowania bieżącej aplikacji pracuję nad, jednak gdy próbuję i sprawdzić wartości nieruchomości/zmienna pojawia się błąd:Nie można wyświetlić wartości zmiennych podczas debugowania

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

To tylko zwykły projekt ASP.NET. W niektórych częściach aplikacji doskonale widzę właściwości i zmienne. Nie wiedziałem, co jest innego w blokach kodu, które mogę i nie widzę wartości zmiennych.

Odpowiedz

10

Problem polegał na tym, że documented na blogu MSDN stanowi ograniczenie rozmiaru niektórych typów w określonych sytuacjach, więcej szczegółów w łączu. Sądzę, że było to 256 bajtów i/lub całkowita wielkość/liczba argumentów przekazywanych do funkcji. Przykro mi to mówić, ale wydaje się, że nie jest to szybka poprawka, ale mam nadzieję, że wpis w blogu MSDN pomoże ci znaleźć sposób na rozwiązanie problemu.

+1

Wątpię, że ograniczenie 256 bajtów (lub liczba argumentów) jest najczęstszą przyczyną tego błędu. Artykuł wymieniony w tym artykule [Rules of Funceval] (http://blogs.msdn.com/b/jmstall/archive/2005/11/15/funceval-rules.aspx) podaje wiele innych powodów, dla których może wystąpić. – kristianp

+0

To również było w VS2008 RTM, więc SP1 mógł to naprawić. Również nie wiem, że istnieje nawet w VS2010. – CertifiedCrazy

+0

FYI, ten sam problem występuje w VS2010. –

0

Czy tworzysz wersje wydań? Spróbuj zmienić konfigurację na "debugowanie" i sprawdź, czy się poprawi.

+0

Nie, konfiguracja rozwiązania jest ustawiona na "Debugowanie" –

+0

Upewnij się, że wszystkie projekty będące częścią konfiguracji rozwiązania "Debugowanie" są oznaczone jako takie. Debugowanie jest po prostu monikerem i możliwe jest ustawienie * projektów * na "Release" w konfiguracji "Debug". Mylące? Tak. –

+0

Poszedłem przez każdy z moich projektów. Wszystkie są ustawione na "Aktywne (debugowanie)", ale zmieniłem je wszystkie na "Debugowanie". Wciąż nie ma szczęścia. –

0

Mamy ten sam problem w dwóch naszych kontrolkach użytkownika WinForm. W obu przypadkach formanty użytkownika zawierają dużą logikę biznesową (odpowiednio 2000 i 3000 linii kodu) i wykorzystują wiele dość ciężkich obiektów (mają 30+ właściwości, które automatycznie zapełniają się z bazy danych za pierwszym razem, gdy jedna z właściwości są dostępne). Podczas próby przejścia przez (nieco skomplikowane) metody sprawdzania poprawności i zapisywania, pojawia się ten sam komunikat podczas próby uzyskania dostępu do właściwości obiektu.

Doszliśmy do wniosku, że rozmiar i złożoność kontroli użytkownika w połączeniu z rozmiarem i złożonością używanych obiektów oraz warunkowym dostępem do bazy danych staje się zbyt dużym obciążeniem dla debuggera i że prawdopodobnie powinniśmy po prostu zrobić trochę główne refaktoryzacji, aby przenieść większość logiki biznesowej z kontroli użytkownika. Byłoby interesujące dowiedzieć się, czy twój problem wynika z tego samego rodzaju sytuacji i czy wykonanie wspomnianego rodzaju refaktoryzacji faktycznie ma znaczenie (nie mieliśmy czasu i/lub odwagi), aby to zrobić).

2

Ten artykuł, Rules of Funceval podaje kilka powodów, dla których może się to zdarzyć. Jeśli debugowanie jest włączone, a optymalizacja już wyłączona, nie wydaje się, aby można było zrobić coś więcej.

+0

Dobry artykuł, dzięki! –

Powiązane problemy