Moje okno logcat w Eclipse wyświetla tylko kilka pierwszych linii StackTrace dla każdego wyjątku. Oznacza to, że często nie widzę, gdzie wystąpił wyjątek. Czy istnieje sposób na zmianę tego ustawienia?Okno Eclipse Logcat obcina wyjątkowe ślady stosu
Odpowiedz
Jeśli odnosisz się do części "... 12 linii więcej ...", widzisz tylko to dla wyjątków, które były przyczyną innego wyjątku. Jeśli górna część śladu stosu jest taka sama jak wcześniejsza, pełny zestaw ramek jest pokazany tylko dla wyjątku zewnętrznego, a pozostałe ślady otrzymują traktowanie "...".
Innymi słowy, fragment śladu, którego nie pokazano, jest duplikatem śladu, który pojawił się wcześniej w łańcuchu przyczyn wyjątku. Załóżmy na przykład, że mam kod, w którym wywoływana jest metoda main()
, która wywołuje two()
i tak dalej. four()
zgłasza wyjątek. two()
łapie i ponownie rzuca. Wyjątkiem będzie wyglądać następująco:
java.lang.RuntimeException: re-throw
at Foo.two(Foo.java:14)
at Foo.one(Foo.java:7)
at Foo.main(Foo.java:3)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: first
at Foo.four(Foo.java:23)
at Foo.three(Foo.java:19)
at Foo.two(Foo.java:12)
... 3 more
W „spowodowane” wyjątek mówi „... 3 więcej” niż wyraźnie wymieniając one()
, main()
i dalvik.system.NativeStart.main
. Aby uzyskać pełny ślad początkowego wyjątku, zacznij od odczytania jego śladu, a następnie kontynuuj od powyższego śledzenia.
Uwaga nie pokrywają - two()
pojawia się w obu, ale w „pierwszym” prześledzić to na wywołaniu three()
, oraz w „ponownego rzutu” prześledzić to na polecenie throw
.
Więc jakie jest rozwiązanie, jeśli oryginalny wyjątek jest tym, którego chcesz zobaczyć więcej niż 7 linii? – George
Przepisałem wyjaśnienie i dodałem przykład. – fadden
Tak, od jakiegoś czasu nie pracowałem z "prawdziwą" Javą, ale powinienem był to sprawdzić, szukając go w "Java stacktrace 12 more" lub coś w tym stylu. Jak zauważyłeś, linie redakcyjne ("12 więcej") są zduplikowanymi liniami ze stosu powyżej. Miałem wrażenie, że LogCat przycinał "pomocne" linie stosu, ale tak nie jest. Dzięki za naprawienie mojego nieporozumienia. – George
Jeśli twój kod wywoła metodę, która daje zbyt duży stos, możesz (i powinieneś) obsłużyć wyjątek w kodzie i wypisać, co jest istotne dla logów.
Jeśli nie masz żadnych wyjątków, a nawet nie wiesz, gdzie w swoim kodzie powinieneś umieszczać takiego handler'a, to problem jest zupełnie gdzie indziej - powinieneś obsługiwać wyjątki nieco lepiej.
można przeciążać wszystkie metody dziennika (log.d, log.i, log.e, etc) z parametrami (String tag, String msg, Throwable tr)
, gdzie trzeci parametr jest wyjątkiem. To daje pełną StackTrace w LogCat
http://developer.android.com/reference/android/util/Log.html
- 1. zobacz android logcat bez Eclipse
- 2. Kompilator Java Eclipse generuje różne ślady stosu po uruchomieniu z wiersza polecenia
- 3. Kiedy będą wyświetlane właściwe ślady stosu w funkcji window.onError?
- 4. Django: jak uzyskać ślady stosu dla ostrzeżeń runtime
- 5. Jak uzyskać logi awarii i ślady stosu z aplikacji WinRT napisanych w języku C#?
- 6. Filtr Eclipse Logcat plus znak niewidoczny
- 7. Przeglądarka Logcat w Eclipse migocze denerwująco
- 8. Zmiana czcionki Android LogCat w środowisku Eclipse
- 9. Jak wyprowadzać LogCat na konsolę?
- 10. Zapobieganie awariom Program pokazujący kiedy przydział stos ślady
- 11. Błąd przepełnienia stosu Java - jak zwiększyć rozmiar stosu w Eclipse?
- 12. Jak zamienić okno wyszukiwania Eclipse?
- 13. LogCat przestaje działać
- 14. Seler obcina wiadomości dziennika
- 15. Znajdowanie śledzenia stosu w Eclipse z Androidem
- 16. Android w Eclipse: Kopiuj/Wklej z LogCat (tylko "Tekst")
- 17. Eclipse należy często uruchamiać ponownie, aby program logcat działał prawidłowo
- 18. Eclipse Logcat nie otrzymuje aktualizacji bieżącego filtru (Android).
- 19. W gevent, w jaki sposób mogę zrzucić ślady stosu wszystkich uruchomionych greenletów?
- 20. Czy powinienem niszczyć moje ślady?
- 21. Powrót wyjątkowe rezultaty w elasticsearch
- 22. Czy Thread.Sleep (1) jest wyjątkowe?
- 23. Wyjątkowe ograniczenie Oracle z wyrażeniem
- 24. Pobieranie śladów stosu w Perlu?
- 25. Filtrowanie Logcat?
- 26. Usuń Logcat z Java Perspective
- 27. Czy jest polecenie usuwania logcat?
- 28. SqlCommand() ExecuteNonQuery() obcina tekst polecenia
- 29. Eclipse zastępuje okno edytora nowym wyborem wyszukiwania
- 30. Okno "Zmienne" Eclipse, zmieniono kolor wartości
Która wersja SDK używasz? To dość dziwaczny behaivor ... czy możesz podać przykład wyjścia, które odcina ślad stosu? * Edycja *: Nie widziałem tagu eclipse, przepraszam. W każdym razie, jeśli użyjesz oryginalnego logcat, myślę, że nie będziesz miał problemów: 'adb logcat' – Cristian
Jeśli odnosisz się do części" ... 12 linii więcej ... ", widzisz tylko to dla wyjątków były przyczyną innego wyjątku. Jeśli górna część śladu stosu jest taka sama jak druga, pełny zestaw ramek jest pokazany tylko dla jednego z nich, a drugi otrzymuje "..." traktowanie. (Naprawdę musisz dodać więcej szczegółów do swojego pytania - po prostu zgadujemy, co chcesz.) – fadden
@Fadden: Masz rację - w ogóle to nie odcina. Jeśli umieścisz ten komentarz jako odpowiedź, zaakceptuję go. – Casebash