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

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

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

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

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

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

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

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

Есть идеи ?


person Thordax    schedule 09.11.2011    source источник
comment
Вы могли бы, вероятно, throw исключить из строки, где вы получаете проблему.. Но это также остановит вашу программу   -  person Default    schedule 09.11.2011
comment
Это связано с тем, что редактор обрабатывает трассировки стека из исключений. В зависимости от кода из редактора это возможно только в том случае, если создатель IDE сопоставляет строку в журнале с реальным файлом в вашем проекте.   -  person Patrick    schedule 09.11.2011
comment
При использовании eclipse вы можете использовать Консоль Stacktrace.   -  person JimmyB    schedule 09.11.2011


Ответы (2)


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

Log.e("TAG", "Looky here see", new Exception());
person Patrick    schedule 09.11.2011
comment
Спасибо за совет, это довольно эффективно, и я действительно не против загромождать свой журнал. - person Thordax; 10.11.2011

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

    }
person Bobs    schedule 03.09.2012