มีวิธีใดในการเข้าถึง Log in Logcat โดยอัตโนมัติด้วยการดับเบิลคลิกหรือไม่?

มีวิธีใดในการเข้าถึง Log in Logcat โดยอัตโนมัติด้วยการดับเบิลคลิกหรือไม่?

จริงๆ แล้วเวลามีข้อผิดพลาดที่ทำให้แอปพลิเคชัน Android ของฉันขัดข้อง ฉันสามารถดับเบิ้ลคลิกที่บรรทัดที่เขียนว่า เป็นต้น

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

และเมื่อดับเบิลคลิกที่บรรทัดนี้ ฉันจะถูกเปลี่ยนเส้นทางไปยังบรรทัดที่เกี่ยวข้องของโค้ดของฉันโดยอัตโนมัติ

แต่เมื่อฉันพยายามสร้างบรรทัดเดียวกันในบันทึกอื่น ตัวอย่าง:

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

Double-Click ไม่ทำงานอีกต่อไป ...

มีความคิดอะไรบ้าง?


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