Logcat ไม่แสดงการเรียกบันทึกของฉัน


114

ฉันเป็น noob ทั้งหมดในการเขียนโปรแกรม Android และต้องการเรียนรู้วิธีการดีบักแอปของฉัน ดูเหมือนว่าจะไม่มีการโทร Log.i | d | v ของฉันปรากฏใน LogCat

นี่คือรหัสที่ฉันใช้ อย่างที่คุณเห็นฉันได้กำหนดค่าคงที่ LOG_TAG แต่ดูเหมือนจะไม่พบใน LogCat ฉันได้นำเข้า android.util.Log ด้วยและฉันได้ตรวจสอบให้แน่ใจว่าใน AndroidManifest ของฉันฉันได้ตั้งค่า "debuggable" เป็น TRUE

ฉันได้ตรวจสอบhttp://developer.android.com/reference/android/util/Log.html โดยไม่มีโชคในการแก้ไขปัญหานี้

ผมทำอะไรผิดหรือเปล่า? ฉันกำลังมองหาสถานที่ที่ถูกต้องหรือไม่? ฉันได้ลองใช้มุมมอง DDMS และ Debug แล้วโดยไม่มีโชค ความช่วยเหลือใด ๆ สำหรับ noob นี้จะได้รับการชื่นชมอย่างมาก ขอบคุณ

สภาพแวดล้อมของฉัน: Windows XP IDE = Eclipse เวอร์ชัน: 3.6.1, Build id: M20100909-0800 Emulator = ให้มันชี้ไปที่ android sdk 2.1 api 7

// รหัส HELLO World พื้นฐานมากพร้อมการโทร Log.i สองสามครั้ง

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class debugger extends Activity {
    private static final String LOG_TAG = "debugger";

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        Log.i(LOG_TAG, "line 13");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Log.i(LOG_TAG, "CREATING NOW");
    }
}

ดูเหมือนว่าคุณกำลังทำอะไรผิดคุณแน่ใจหรือว่ากำลังเริ่มกิจกรรมของคุณ คุณมีตัวกรองใด ๆ ที่ตั้งค่าในมุมมอง logcat หรือไม่? คุณลอง logcat เวอร์ชันบรรทัดคำสั่งหรือไม่ (adb logcat)
Cheryl Simon

ใช่ลองใช้บรรทัดคำสั่งและส่งออกไปยังไฟล์ txt แล้วก็ยังไม่พบ ฉันรู้ว่ากิจกรรมเริ่มต้นขึ้นเพราะฉันเห็นข้อความ "Hello World" ในโปรแกรมจำลอง ฉันลองดู logcat ทั้งแบบมีและไม่มีตัวกรอง แต่ก็ยังไม่มีโชค
Cavachon

ลองใช้บรรทัดคำสั่ง adb logcat และไม่กรองอะไรก่อน ฉันค่อนข้างมั่นใจว่ารหัสของคุณใช้งานได้และพิมพ์ลงในบันทึก
Heikki Toivonen

LogCat ใช้งานได้หรือไม่ เช่นคุณเห็นรายการบันทึกจากแอปอื่น (เช่นแอประบบ) หรือไม่
Vit Khudenko

อาจเป็นอุปกรณ์เฉพาะ บางครั้งเราต้องเปิดใช้งานบันทึกจากเมนูที่ซ่อนอยู่ในโทรศัพท์stackoverflow.com/a/43999262/2783229
nitesh

คำตอบ:


143

เมื่อใช้ Eclipse ในมุมมอง DDMS ตรวจสอบให้แน่ใจว่าได้เลือกและไฮไลต์อุปกรณ์ที่ถูกต้อง (propably emulator-xxxx) จากนั้นคุณจะได้รับเอาต์พุต logcat ในมุมมอง logcat

นอกจากนี้ปลั๊กอิน Android ยังดูแปลก ๆ และบางครั้งก็แสดงเฉพาะบรรทัดสุดท้ายในมุมมอง logcat หากเกิดเหตุการณ์นี้ขึ้นให้ลองล้างบันทึก หลังจากนั้นคุณควรได้รับรายการบันทึกทั้งหมดอีกครั้ง (ใช้ได้กับฉันอยู่ดี)


ใช่ปัญหาทั้งหมดที่ฉันมีเช่นกัน หากคุณเลื่อนภายในมุมมอง Logcat จะไม่เลื่อนพร้อมกับการอัปเดตในอนาคตโดยอัตโนมัติจนกว่าคุณจะเลื่อนกลับไปที่ด้านล่าง
Mike Yockey

2
ฮา! ฉันต่อสู้กับสิ่งนี้มาสักพักแล้ว เปิด DDMS และฉันเลือกโปรแกรมจำลองเก่าแล้ว เหตุใดจึงไม่เป็นค่าเริ่มต้นของโปรแกรมจำลองที่กำลังทำงานอยู่จึงเป็นเลขคี่
Will Curran

คำตอบของ ddewaele ช่วยแก้ปัญหาของฉันได้คุณเพียงแค่ปล่อยให้ LogCat อยู่ในจุดที่ควรโฟกัส คุณไม่จำเป็นต้องเปลี่ยนมุมมองเพื่อเปิดเมนูอุปกรณ์เพียงไปที่หน้าต่าง >> แสดงมุมมอง >> อื่น ๆ >> Android >> อุปกรณ์เพื่อเปิดแผงอุปกรณ์
Jay

@yock ฉันเชื่อว่านั่นเป็นความตั้งใจเนื่องจากสมมติฐานคือคุณต้องการหยุดและอ่านเมื่อถึงจุดที่คุณเลื่อนไป
Michael Mior

1
ฮ่า ๆ ๆ ฉันโง่มากฉันไม่รู้ว่า DDMS คืออะไรและจะหาได้จากที่ไหน
Neon Warge

71

หากทุกอย่างล้มเหลว:

ฉันทำทุกอย่างข้างต้นแล้วและคิดไม่ออกว่ามีอะไรผิดปกติ

ทดสอบกับ:

adb logcat

เพื่อให้ทราบว่ารายการของฉันไม่ชัดเจนใน logcat แต่นิสัยใจคอของ twas adt

การแก้ไข:

รีสตาร์ท eclipse

นี่เป็นสิ่งเดียวที่แก้ไขได้


1
ใช้งานได้ แต่ฉันไม่สามารถรีสตาร์ท Eclipse ได้เนื่องจากปัญหานี้เกิดขึ้นมากมายสำหรับฉัน ใครมีวิธีแก้ไขที่ดีกว่านี้ไหม
Khaled Alanezi

@KhaledAlanezi ควรพิจารณาใช้ logcat จาก command prompt หรือ windows powershell (ดีกว่า)
Dheeraj Bhaskar

1
ฉันเพิ่งเริ่มคราสใหม่ทุกครั้งที่สิ่งนี้เกิดขึ้นและมันจะแก้ปัญหาได้เสมอ มันมักจะเกิดขึ้นวันละครั้ง แต่ฉันก็เคยผิดหวังจากคราสแล้ว ..
โปรแกรมเมอร์

2
@ โปรแกรมเมอร์ผิดหวังกับคราสไม่มากย้ายไปที่ Android Studio เพื่อนของฉัน :)
Dheeraj Bhaskar

1
สำหรับฉันการใช้อีมูเลเตอร์บนเครื่องระยะไกลการรีสตาร์ท eclipse ไม่ทำงาน Logcat ไม่เคยแสดงอะไรเลย แต่adb logcatเป็นเคล็ดลับที่ดีมันใช้งานได้ดี
soger

12

ฉันมีปัญหาเดียวกันกับการใช้ Android Studio และสามารถแก้ไขได้โดยเลือกNo Filtersในกล่องเลือกที่มุมขวาบนของ LogCat ด้วยการทำเช่นนี้ฉันเริ่มได้รับทุกสิ่งที่ Android บันทึกในพื้นหลังใน LogCat รวมถึงการโทรเข้าสู่ระบบที่ขาดหายไป

ใส่คำอธิบายภาพที่นี่



6

ฉันพบว่าฉันกำลังนำเข้าcom.sileria.Logโดยอัตโนมัติ(จากโครงการห้องสมุดบางแห่ง) แทนที่จะเป็นandroid.util.Logซึ่งอันหลังคืออันที่ถูกต้อง ตรวจสอบการนำเข้าของคุณด้วย


3

ฉันสังเกตว่าบางครั้ง Eclipse จะทำให้เกิดข้อยกเว้นเมื่อเริ่มแอป Android จากนั้น LogCat จะหยุดอัปเดต ฉันได้แก้ไขแล้วโดยเพียงแค่รีสตาร์ท Eclipse ฉันไม่แน่ใจว่าคุณได้ลองหรือไม่และฉันรู้ว่ามันยังห่างไกลจากวิธีแก้ปัญหาที่ดีที่สุด แต่ฉันสงสัยว่าปลั๊กอิน Eclipse ยังคงมีข้อบกพร่องบางประการที่ต้องรีดออก


3

วิธีที่ง่ายที่สุด:

ตรวจสอบในหน้าต่าง logcat ของคุณ - ปุ่มหยุดมุมขวาบนสุด || (หยุดรับข้อความ logcat ใหม่ชั่วคราว)

คลิกไม่กี่ครั้ง + รีสตาร์ทคราสในที่สุด (โดยปกติจะใช้ได้ในกรณีของฉัน)


3

ฉันต้องการเริ่มบริการ adb ใหม่ด้วยคำสั่ง adb usb

ก่อนหน้านี้ฉันได้รับการบันทึกทั้งหมดและสามารถแก้ไขข้อบกพร่อง แต่ไม่ได้รับรายการบันทึกของฉันเอง (ใช่ฉันได้รับการบันทึกระบบที่เชื่อมโยงกับแอปพลิเคชันของฉัน)


ฉันมีสิ่งนี้ด้วย - ไม่ได้รับบรรทัดบันทึกของตัวเอง แต่สิ่งนี้ไม่ได้ช่วยอะไร :(
Ixx

2

มีสาเหตุหลายประการที่คุณอาจไม่เห็นบันทึกซึ่งส่วนใหญ่แสดงอยู่ด้านล่าง ขั้นตอนในการตรวจสอบสาเหตุส่วนใหญ่มีดังนี้

  1. ตรวจสอบว่าคุณไม่มี 'android: debuggable = "false"' ใน AndroidManifest.xml
  2. ตรวจสอบให้แน่ใจว่า Logcat ของคุณไม่ได้หยุดชั่วคราวและตรวจสอบให้แน่ใจว่าคุณได้เลื่อนไปที่ด้านล่าง
  3. ตัวกรองของคุณควรเป็น "ไม่มีตัวกรอง" หรือแอปปัจจุบันของคุณ
  4. คุณได้เลือกอุปกรณ์ที่ถูกต้องในรายการอุปกรณ์ logcat ของคุณ
  5. หากคุณไม่ได้รับข้อความใด ๆให้ลองรีสตาร์ท adb คุณสามารถทำได้จาก Android Studio โดยคลิกที่ไอคอน "รีสตาร์ท" ซึ่งอยู่ถัดจากไอคอนพิมพ์ของ logcat และดูเหมือนลูกศรโค้งสีเขียวที่ออกมาจากกล่อง หากคุณไม่เห็นให้วางเมาส์เหนือ ">>" ที่ยังคงอยู่ในเมนูไอคอนเมื่อ logcat มีขนาดเล็กเกินไป

2

บน Android Studio: คลิกที่ลูกศรสีเขียวที่ชี้ไปทางขวาเพื่อเริ่มการบันทึกใหม่ หากมองไม่เห็นให้คลิกที่ไอคอน >> เพื่อค้นหา


1

ฉันเป็น newb เช่นกันกับ Android-Eclipse นี่คือสิ่งที่ฉันต้องใช้เพื่อให้ข้อความ LogCat แสดงใน Eclipse: 1: เพิ่มสิ่งนี้ลงในคลาสที่ข้อความ Logcat เรียกว่า: Private static final String TAG = "MyActivity"; (ตามเอกสารที่นี่ )

2: เพิ่ม Log.i นี้ (TAG, "inLayout - finished"); เมื่อคุณต้องการแสดงข้อความที่ไหน

หากข้างต้นไม่ได้ผลให้ปิด Eclipse แล้วรีสตาร์ทและรันโครงการของคุณอีกครั้ง

จากนั้นควรใช้งานได้


1

มีอีกสิ่งหนึ่งที่ควรระวัง:

ที่ด้านขวาบนของ logcat จะมีตารางดรอปดาวน์สำหรับกรองข้อความตามประเภท ตรวจสอบให้แน่ใจว่าอยู่ในระดับที่คุณกำลังมองหา (หากอยู่ในระดับยืนยันอาจปล่อยให้ Logcat ว่างเปล่า)


1

โปรดไปที่ Task Manager และฆ่ากระบวนการ adb.exe รีสตาร์ทคราสของคุณอีกครั้ง

หรือ

ลองadb kill-serverจากนั้นคำสั่งadb start-server


1

อาจจะไม่ถูกต้องและนานกว่านี้เล็กน้อย แต่ฉันแก้ไขปัญหานี้ (Android Studio) โดยใช้สิ่งนี้:

System.out.println("Some text here");

แบบนี้:

try {
       ...code here...
} catch(Exception e) {
  System.out.println("Error desc: " + e.getMessage());
}

1

ฉันใช้เวลาหลายชั่วโมงในกรณีดังกล่าว ฉันเห็นเพียงบันทึกแป้นสัมผัส ไม่มีอะไรมาก ปัญหาคือ ... smarthphone หลังจากรีสตาร์ทก็โอเค การถอดสายทำให้เกิดปัญหากลับมา ต้องรีสตาร์ทอีกครั้ง ดูเหมือนว่าการสื่อสาร USB ของ Android ไม่ได้รับการออกแบบมาอย่างดี


ขอบคุณ! อันที่จริงมันคือการตั้งค่า USB ในเมนูด่วนของโทรศัพท์ ... เกี่ยวกับการดีบัก USB ฉันมีนิสัยเปลี่ยนจากการชาร์จอย่างเดียวเป็นโอนไฟล์ แต่การชาร์จเท่านั้นคือสิ่งที่ทำให้การบันทึกทำงานได้ ฉันเพิ่งกลับไปใช้โปรแกรม Android หลังจากไม่กี่ปีและนี่เป็นอุปสรรคในการเรียนรู้ของฉันจริงๆ
wwfloyd

จากนั้นฉันได้รับการบันทึกเพียงบางส่วนเท่านั้น ... ทุกอย่างที่เพิ่มเมื่อเร็ว ๆ นี้ถูกเพิกเฉย ได้รับการจัดเรียงด้วย Clean and Rerun ใน Android Studio
wwfloyd


0

การใช้ SDK 4.0.3 คุณต้องเลือกอย่างชัดเจนในการกำหนดค่าการดีบัก> โครงการ> เป้าหมายมิฉะนั้นจะไม่แสดงโดยใช้ Eclipse Indigo (3.7) แน่นอนว่าการรีสตาร์ทคราสเกิดขึ้น


0

ฉันมีปัญหาในการดูเอาต์พุตบันทึกอย่างง่ายใน logcat เช่นกัน ปัญหาของฉันได้รับการแก้ไขเมื่อฉันติดตั้ง JDK ล่าสุด ฉันเพิ่งติดตั้งเครื่องพัฒนาใหม่และมีเพียง JRE ที่ติดตั้งและติดตั้ง JDK เท่านั้นที่ใช้ได้สำหรับฉัน


0

ไม่มีคำตอบอื่นใดที่เหมาะกับฉัน แต่สิ่งนี้ทำได้:

ฉันลบโปรเจ็กต์ออกจากพื้นที่ทำงานแล้วลบอะไรก็ตามที่ขึ้นต้นด้วยจุด (.settings, .project ฯลฯ ) ออกจากโฟลเดอร์โปรเจ็กต์ จากนั้นฉันนำเข้าใหม่ที่คาดการณ์ไว้ ฉันขาดการตั้งค่าและจุดพักบางอย่าง แต่อย่างน้อยก็ใช้งานได้


0

ฉันประสบปัญหานี้และดูเหมือนจะไม่มีอะไรทำงานจนกว่าฉันจะย้ายการโทรเข้าสู่ระบบไปยังตัวจัดการ ตอนนี้ใช้งานได้ทุกครั้งไม่ว่าคุณจะอยู่ที่ใด


0

ฉันทำผิดพลาดในการพิมพ์ข้อความค้นหาในช่องค้นหา logcat ฉันลืมลบมันจึงมองไม่เห็นบันทึกใหม่ เนื่องจากไม่ตรงกับข้อความค้นหาของฉันและไม่ปรากฏ


0

ในกรณีของฉันฉันต้องลบบรรทัดนี้:

    <application
         android:debuggable="false"  <!-- Remove this line -->
         ..../>

จากแท็กแอปพลิเคชันในไฟล์ Manifest ของฉัน


0

ทางออกที่ดีที่สุดสำหรับฉันคือรีสตาร์ทเซิร์ฟเวอร์ adb (ในขณะที่ฉันเปิดใช้งานการรวม ADB ในสตูดิโอ Android - เครื่องมือ - Android - ตรวจสอบแล้ว) ในการดำเนินการนี้อย่างรวดเร็วฉันสร้างadbr.batไฟล์ภายในandroid-sdk\platform-toolsไดเร็กทอรี (ที่adb.exeอยู่) โดยมีสิ่งนี้อยู่ภายใน:

adb kill-server
adb start-server

เนื่องจากฉันมีโฟลเดอร์นี้ในตัวแปรระบบ PATH เมื่อฉันต้องการเริ่มต้นใหม่adbจากสตูดิโอ Android ฉันจึงสามารถเขียนลงในเทอร์มินัลเท่านั้นadbrและเสร็จสิ้น

ตัวเลือกที่จะทำเช่นนี้ก็คือผ่านอุปกรณ์ Android จอภาพในแท็บ Devices - เมนูหลังจากคลิกที่ลูกศรขวาขนาดเล็ก - adb


0

สำหรับ eclipse: 1) ไปที่มุมมอง ddms 2) ตรวจสอบให้แน่ใจว่าได้เลือกอุปกรณ์ที่ถูกต้อง 3) หากเลือกไว้แล้วและไม่แสดงบันทึกให้รีสตาร์ท ABD * หวังว่านี่จะแก้ปัญหาได้


0

ฉันเริ่มบริการ ADB ใหม่ด้วย "adb usb" และแก้ไขปัญหาให้ฉัน อันที่จริงมีเพียงกิจกรรมเดียวของฉันที่ไม่ได้บันทึกอีกต่อไป คนอื่น ๆ ทั้งหมดได้บันทึกสิ่งต่างๆ หลังจากรีสตาร์ท adb ทุกอย่างทำงานเหมือนมีเสน่ห์อีกครั้ง สำหรับคนอื่น ๆ ที่กำลังค้นหาวิธีแก้ปัญหาอื่น: adb kill-server, adb start-server ใน CLI มักจะแก้ไขปัญหาของคุณได้เช่นกัน


0

ทำให้แอปของคุณบังคับปิดเมื่อสิ่งนี้จะเริ่ม LogCat อีกครั้ง ...

ใช้สิ่งนี้เพื่อบังคับปิด: D

setContentView(BIND_AUTO_CREATE);

0

บางครั้งปัญหาไม่ได้มาจากพีซีในทางกลับกัน IDE, ADB และอื่น ๆ แต่เกิดจากอุปกรณ์ของคุณที่ไม่ส่งบันทึกไปยัง ADB ดังนั้นหากคุณลองทุกวิธีที่กล่าวมาก่อนหน้านี้และยังคง Logcat ของคุณว่างเปล่าให้ลองรีสตาร์ท อุปกรณ์แล้วลองอีกครั้งฉันลองทุกวิธีที่กล่าวมาแล้วและทั้งสองวิธีไม่ได้ผล แต่หลังจากรีสตาร์ทในโทรศัพท์ของฉัน logcat ก็ทำงานได้เหมือนเวทมนตร์


จะตรวจสอบได้อย่างไรว่าอุปกรณ์สามารถส่งบันทึกไปยัง ADB ได้หรือไม่?
JCarlosR

@JCarlos ลองรีสตาร์ทอุปกรณ์ของคุณหากวิธีแก้ปัญหาข้างต้นไม่ได้ผล
Code_Worm

AndroidMonitor แสดงข้อความเมื่อฉันใช้Logและเรียกใช้แอพจากสมาร์ทโฟนของฉัน แต่มันไม่ทำงานจากสมาร์ทวอทช์ของฉัน ฉันกำลังมองหาการตั้งค่า แต่ทุกอย่างดูเหมือนจะดี
JCarlosR

0

ฉันมีปัญหานี้และได้รับการแก้ไข String TAG ไม่มีช่องว่าง:

"my tag" // noting show
"my_tag" // ก็โอเค


0

ในกรณีของฉันฉันต้องเพิ่มชื่อใน String ในกรณีแรกฉันมีช่องว่างระหว่างวงเล็บ

private static final String TAG = " ";

แต่หลังจากเพิ่มชื่อมันก็ทำงานได้อย่างสมบูรณ์

private static final String TAG = "oncreate";

0

หลังจากอัปเกรดเป็น Android 3.6.1 ฉันพบปัญหานี้หลายครั้ง สิ่งเดียวที่ใช้ได้ในกรณีของฉันคือการรีสตาร์ทอุปกรณ์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.