Domanda

La mia finestra logcat in Eclipse visualizza solo le prime righe del StackTrace per ciascuna eccezione. Ciò significa che spesso non possono vedere dove si è verificato un'eccezione. Esiste un modo per modificare le impostazioni?

È stato utile?

Soluzione

Se ti riferisci alla "... 12 più linee ..." parte, si vede solo che per le eccezioni che sono state la causa di un'altra eccezione. Se la parte superiore della traccia dello stack è la stessa come la traccia in precedenza, la serie completa di frame viene visualizzato solo per l'eccezione più esterna, e le altre tracce ottenere il "..." trattamento.

In altre parole, il pezzo di una traccia che non viene mostrato è un duplicato di una traccia che è apparso in precedenza nella catena un'eccezione causa. Ad esempio, supponiamo di avere codice in cui le chiamate di metodo main() one(), che chiama two(), e così via. four() genera un'eccezione. two() afferra e ri-getta. L'eccezione sarà simile a questa:

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

Il "causato da" eccezione dice: "... 3 più" piuttosto che elencando esplicitamente one(), main() e dalvik.system.NativeStart.main. Quindi, per ottenere il pieno traccia dell'eccezione iniziale, si dovrebbe iniziare leggendo la sua traccia, quindi continuare la traccia sopra.

Nota non c'è sovrapposizione -. Appare two() in entrambi, ma nella "prima" traccia è sulla chiamata a three(), e nel "ri-lancio" traccia è su istruzione throw

Altri suggerimenti

è possibile sovraccaricare tutti i metodi di registro (log.d, log.i, log.e, ecc) con parametri (String tag, String msg, Throwable tr), dove il terzo parametro è l'eccezione. Questo vi darà la piena stacktrace in logcat

http://developer.android.com/reference/android/util/ Log.html

Se il codice chiama un metodo che produce troppo alto della pila si può (e si deve) gestire l'eccezione nel codice e l'output tutto ciò che è rilevante per i registri.

Se non avete la manipolazione di sorta eccezione e non sai nemmeno dove nel codice dovrebbe essere messa una tale gestore allora il problema è del tutto altrove -. Si dovrebbe essere la gestione delle eccezioni un po 'migliore di quella

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top