Есть ли какой-нибудь способ получить автоматический доступ к любому журналу в Logcat двойным щелчком мыши?

#android #eclipse #line #logcat

#Android #eclipse #строка #logcat

Вопрос:

Есть ли какой-нибудь способ получить автоматический доступ к любому журналу в Logcat двойным щелчком мыши?

На самом деле, когда возникает ошибка, приводящая к сбою моего приложения Android, я могу дважды щелкнуть строку, в которой говорится, например

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

И при двойном щелчке по этой строке я автоматически перенаправляюсь на соответствующую строку моего кода.

Но, когда я пытаюсь сгенерировать ту же строку в другом журнале, например :

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

Двойной щелчок больше не работает…

Есть идеи?

Комментарии:

1. Вероятно, вы могли бы throw создать исключение из строки, в которой вы получаете проблему.. Но это также остановило бы вашу программу

2. Это потому, что редактор обрабатывает трассировки стека из исключений. В зависимости от кода из редактора это возможно только в том случае, если создатель IDE сопоставляет строку в журнале с реальным файлом в вашем проекте.

3. Если вы используете eclipse, вы можете использовать «Консоль Stacktrace» .

Ответ №1:

Если вы хотите создать журнал в 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   ")");

    }
  

Ответ №2:

Если вы не возражаете против беспорядка в вашем журнале, вы можете легко просто добавить new Exception() в сообщение журнала

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

Комментарии:

1. Спасибо за совет, это довольно эффективно, и я действительно не возражаю против загромождения моего журнала.