2012-09-19 16 views
12

Nie można wyświetlić treści zmiennych w widoku zmiennych, ani w widoku Wyrażenia, ani w widoku Wyświetlanie - jeśli zmienne są zdefiniowane w debugerze (eclipse) poza anonimową klasą, ale debugowanie jest wewnątrz anonimowej klasy.Nie można zobaczyć ostatecznej zawartości zmiennej w anonimowej klasie podczas debugowania w aplikacji Eclipse dla systemu Android

Kiedy próbuję zobaczyć zawartość debugowania, otrzymuję błąd: x nie może być rozwiązany do zmiennej.

W poniższym przykładzie, x nie może być rozwiązany:

private void someMethod(final Object x) { 
    new Runnable() { 
    public void run() { 
     Log.i(x); // x is printed correctly but cannot be resolved when in Debug 
    } 
    }.run(); 
} 

To pytanie chodzi o środowisko programistyczne Eclipse - dotyczące debugowania Android. To nie jest dyskusja o finale, ani kompilacji - po prostu debugowanie.

+0

To dzieje się na Eclipse 4.2.0 i 3.7.1 na Ubuntu 11.10 i 12.04 –

+0

Otworzył błąd: http://code.google.com/p/android/issues/detail?id=37662 –

+0

Istnieje obejście - przeglądanie zmienna jako członek instancji zamykającej. Przykład: 'this $ 0' -> 'val $ x'. –

Odpowiedz

0

Miałem ten sam problem ostatnio, ale aktualizacja android SDK, a następnie ponowne uruchomienie Eclipse naprawił go. Spróbuj zaktualizować SDK do najnowszej wersji.

+0

Byłem tam zrobiony, że –

+0

nie działa, ten błąd wkradł się tam w Eclipse 4.3 ... i jego wydaje się być w dowolnej wewnętrznej klasie, która jest dołączona do wątku UI. Coś się zepsuło i nikt nie jest pewien, jak to naprawić. – JPM

1

Mam do czynienia z podobnymi problemami podczas debugowania aplikacji, które używa wątków. Zgaduję, że twoja aplikacja jest wielowątkowa, ponieważ zwykłem stawać przed takimi rzeczami tylko w tej sytuacji. Może to być spowodowane tym, że po uruchomieniu programu większość wątków zostanie uruchomiona w tym samym czasie. Ale w trybie debugowania jeden z twoich wątków, który ma ustawiony punkt przerwania, będzie trzymany, gdzie podobnie jak inne wątki, które rozpoczęły się razem, zostałyby już wykonane lub odwrotnie. Dlatego ludzie mówią, że debugowanie aplikacji wielowątkowej jest nieco trudniejsze, o ile nie utrzymasz priorytetu lub nie zsynchronizujesz wątków.

Mam nadzieję, że te informacje pomogą. Zamiast zatrzymywać przepływ z punktem przerwania, spróbuj wydrukować wartość, w której musisz znać wartość za pomocą sysout lub podobnych rzeczy, co jest jak uruchomienie programu, ale wciąż debugujesz, na swój sposób :)

+2

Ah dawne kodowanie ... dlaczego Eclipse nie może tego naprawić ... był tam od ostatniej wersji. – JPM

Powiązane problemy