104 votes

Android - imprimer la trace complète des exceptions pour se connecter

J'ai un bloc try/catch, qui lève une exception et je voudrais voir des informations sur l'exception dans l'appareil Android journal.

J'ai lu le journal de l'appareil mobile avec cette commande à partir de mon ordinateur de développement:

/home/dan/android-sdk-linux_x86/tools/adb shell logcat

J'ai essayé d'abord ceci:

try {
    // code buggy code
} catch (Exception e)
{
    e.printStackTrace();
}

mais cela ne veut pas imprimer quoi que ce soit dans le journal. C'est dommage parce qu'il aurait beaucoup aidé.

Le meilleur que j'ai réalisé:

try {
    // code buggy code
} catch (Exception e)
{
    Log.e("MYAPP", "exception: " + e.getMessage());             
    Log.e("MYAPP", "exception: " + e.toString());
}

Mieux que rien mais pas très satisfaisant.

Savez-vous comment faire pour imprimer le backtrace complet dans le journal?

Merci.

178voto

EboMike Points 39257
try {
    // code that might throw an exception
} catch (Exception e) {
    Log.e("MYAPP", "exception", e);
}

56voto

George Points 90

Cette fonction d'assistance fonctionne également bien car Exception est également un Throwable .

     try{
        //bugtastic code here
    }
    catch (Exception e)
    {
         Log.e(TAG, "Exception: "+Log.getStackTraceString(e));
    }
 

8voto

Mark Storer Points 10182
 catch (Exception e) {
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  PrintStream stream = new PrintStream( baos );
  e.printStackTrace(stream);
  stream.flush();
  Log.e("MYAPP", new String( baos.toByteArray() );
}
 

Ou… tu sais… ce qu'a dit EboMike.

2voto

Falmarri Points 20281

e.printStackTrace () l’imprime. Je ne pense pas que vous exécutez le logcat correctement. Ne le lancez pas dans un shell, lancez simplement

/home/dan/android-sdk-linux_x86/tools/adb logcat

1voto

toc777 Points 1077

La sortie standard et la sortie d'erreur sont dirigées vers / dev / null par défaut, de sorte que tout est perdu. Si vous souhaitez enregistrer cette sortie, vous devez suivre les instructions "Affichage de stdout et stderr" indiquées ici.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X