2011-11-09 59 views
6

有沒有什麼辦法通過雙擊自動訪問任何登錄Logcat?有沒有什麼辦法可以通過雙擊自動訪問任何登錄Logcat?

事實上,當出現崩潰我的Android應用程序的錯誤,我可以雙擊就行話說例如

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

並通過在該行雙擊,我自動重定向到相關線路我的代碼。

但是,當我嘗試生成另一個日誌,例如在同一行:

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

雙擊不工作了......

任何想法?

+0

你也許'throw'從何處得到的問題..線的異常,但也將停止你的程序 – Default

+1

這是因爲編輯處理*堆棧跟蹤的異常*。根據編輯器的代碼,這隻有在IDE的創建者將日誌中的字符串與項目中的實際文件相匹配時纔有可能。 – Patrick

+0

如果使用eclipse,則可以使用[「Stacktrace Console」](http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Freference%2Fviews%2Fconsole %2Fref-stacktrace_console.htm)。 – JimmyB

回答

3

如果你不介意在你的日誌中的雜波,您可以輕鬆地只需添加一個new Exception()日誌消息

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

感謝您的提示,這是有效的,我真的不介意混亂我的日誌。 – Thordax

8

如果你想創建一個登錄logcat中,可以點擊並進入你的線使用下面的方法來創建它:

享受!

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

驚人的是多麼簡單! – Phil

相關問題