2011-11-09 6 views
6

C'è un modo per accedere automaticamente a Log in Logcat con un doppio clic?C'è un modo per accedere automaticamente a Log in Logcat con un doppio clic?

In realtà, quando si verifica un errore schiantarsi mio Applicazione Android, posso fare doppio clic sulla riga dicendo per esempio

at com.myapp.mypackage$Class.function(File.java:117) 

E con un doppio clic su questa linea, sto automaticamente reindirizzato alla linea relativa del mio codice.

Ma, quando provo a generare la stessa linea in un altro registro, ad esempio:

Log.e("TAG", "at com.myapp.mypackage$Class.function(File.java:117)"); 

il doppio clic non funziona più ...

Tutte le idee?

+0

probabilmente si potrebbe 'throw' un'eccezione dalla linea in cui si ottiene il problema .. Ma sarebbe anche interrompere il programma di – Default

+1

Questo perché l'editor gestisce * Pila tracce * eccezioni. A seconda del codice dall'editor, ciò è possibile solo se il creatore dell'IDE corrisponde a una stringa nel registro in un file reale nel progetto. – Patrick

+0

Se si utilizza eclipse, è possibile utilizzare ["Stacktrace Console"] (http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Freference%2Fviews%2Fconsole % 2Fref-stacktrace_console.htm). – JimmyB

risposta

3

Se non ti dispiace il disordine nel registro, si può facilmente basta aggiungere un new Exception() per il messaggio di log

Log.e("TAG", "Looky here see", new Exception()); 
+0

Grazie per il suggerimento, è un po 'efficiente, e davvero non mi importa di ingombrare il mio log. – Thordax

8

Se si desidera creare un registro in logcat che può essere cliccato e andare a la tua linea usa il seguente metodo per crearla:

Divertiti!

public static void showLogCat(String tag, String msg) { 

     StackTraceElement[] stackTraceElement = Thread.currentThread() 
       .getStackTrace(); 
     int currentIndex = -1; 
     for (int i = 0; i < stackTraceElement.length; i++) { 
      if (stackTraceElement[i].getMethodName().compareTo("showLogCat") == 0) 
      { 
       currentIndex = i + 1; 
       break; 
      } 
     } 

     String fullClassName = stackTraceElement[currentIndex].getClassName(); 
     String className = fullClassName.substring(fullClassName 
       .lastIndexOf(".") + 1); 
     String methodName = stackTraceElement[currentIndex].getMethodName(); 
     String lineNumber = String 
       .valueOf(stackTraceElement[currentIndex].getLineNumber()); 

     Log.i(tag, msg); 
     Log.i(tag + " position", "at " + fullClassName + "." + methodName + "(" 
       + className + ".java:" + lineNumber + ")"); 

    } 
+0

Incredibile com'è semplice! – Phil

Problemi correlati