Skocz do zawartości
Xylian

Debugowanie w Eclipse

    Rekomendowane odpowiedzi

    Xylian

    Próbuje debugowac swoją aplikacje w eclipse, gdyż wywala mi force close po modyfikacjach.

    Po uruchomieniu debugowania debuger otwiera całą masę czynności zachodzących nie tyle w mojej aplikacji co w kodzie źródłowym java i android. Aplikacja zatrzymuje się gdzieś w nich mimo że nie stawiałem tam przecież żadnych brakepointów.

    Zaznaczyłem w zasadzie wszystkie możliwe step filters, ale to nic nie zmienia. Nie jestem w stanie dotrzeć do błędnej linii kodu w mojej aplikacji, ktoś może doradzić?

    Dołączam screen żeby wiadomo było o co mi chodzi

    Przechwytywanie.jpg

    post-14224-14255698579489_thumb.jpg

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    piotrpo

    Może zamiast debugować, puść ją tak jak jest i zobacz w DDMS jaki błąd i w której linijce kodu ci leci.

    Z mojego skromnego doświadczenia dość ciężkie w śledzeniu są np. błędy w layout.xml objawiające się już runtime. Jednak tak jak pisałem wcześniej - zobacz po postu jaki wyjątek i skąd ci leci.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Xylian

    błąd faktycznie był w xml stąd wywalało aplikacje już w runtimie

    DDMS to...?

    Tak czy inaczej wciąż nie wiem jak pozbyć się tych wszystkich wątkó które nie chce widzieć (szereg takich wyskakuje mi również gdy błąd jest w kodzie aplikacji)

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Polecam tak jak @ piotrpo - DDMS

    DDMS to taka jakby consola która wyświetla wszystko co się dzieje na telefonie możesz tam filtrować błędy itd

    zapytaj się google to się dowiesz wszystko co ci trzeba

    Przy korzystaniu z DDMS polecam takrze korzystać z

    ] Log.d("nazwa wpisu", "jakiś tekst"+ jakaśZmienna);

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    piotrpo

    DDMS to po prostu podgląd logu telefonu - w eclipse, wystarczy przełączyć się na perspektywę DDMS.

    W tym logu oprócz różnych informacji lecą również błędy zgłaszane przez aplikację, w formie zrzutu stosu błędu. Dla przykładu mój własny babol:

    android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
    at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580)
    at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214)
    at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:84)
    at pl.com.digita.BikeComputer.DatabaseAbstractionLayer.startRecording(DatabaseAbstractionLayer.java:229)
    at pl.com.digita.BikeComputer.DatabaseAbstractionLayer.putLocation(DatabaseAbstractionLayer.java:242)
    at pl.com.digita.BikeComputer.gpsService.GpsService.onLocationChanged(GpsService.java:276)
    at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:191)
    at android.location.LocationManager$ListenerTransport.access$000(LocationManager.java:124)
    at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:140)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:143)
    at android.app.ActivityThread.main(ActivityThread.java:4914)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:521)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    at dalvik.system.NativeStart.main(Native Method)
    

    W tekście szukamy rodzaju błędu i odwołania do kodu, który napisaliśmy sami, czyli w tym przypadku:

    android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
    ...
    at pl.com.digita.BikeComputer.DatabaseAbstractionLayer.startRecording(DatabaseAbstractionLayer.java:229)
    at pl.com.digita.BikeComputer.DatabaseAbstractionLayer.putLocation(DatabaseAbstractionLayer.java:242)
    at pl.com.digita.BikeComputer.gpsService.GpsService.onLocationChanged(GpsService.java:276)
    

    Uzbrojeni w taką informację idziemy w do naszego kodu - tutaj DatabaseAbstractionLayer.java:229 i patrzymy dlaczego tak się dzieje (przy pewnej wprawie w 99% przypadków tyle wystarczy). Jeżeli nadal nic nie kumamy, ustawiamy sobie break point PRZED linią w której leci błąd i odpalamy debuger. Olewamy wątki, ale przyglądamy się krok po kroku poszczególnym obiektom i ich wartościom. Co ważne - w debugerze mamy kilka przycisków i w zależności od tego co klikniemy będziemy się zagłębiać w kod na różną głębokość.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Xylian

    Mam wrażenie, że mój DDMS nie wykrywa żadnego urządzenia. Aplikacja chodzi w emulatorze a wszystko co widze w perspektywie DDMS widac na skrinie. Szukam jakichś informacji o konfiguracji tego ale nic nie mogę znaleźć ...

    post-14224-14255698581715_thumb.jpg

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    piotrpo

    Przecież na dole widzisz czerwono na białym co się dzieje

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Xylian

    Ta, wiem. Ale chciałem sie dostać do FileExplorera a jego nie było. Już jest w każdym razie.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x