แอพ Android หยุดทำงานเมื่อเปิดตัวในโหมดแก้ไขข้อบกพร่อง


290

เมื่อฉันรันในโหมดดีบักแอปขัดข้อง แต่เมื่อฉันเรียกใช้ตามปกติจะใช้งานได้ ฉันคิดว่าปัญหาเกิดขึ้นเมื่อมีการแนบดีบักเกอร์

เข้าสู่ระบบ:

A/art: art/runtime/jdwp/jdwp_event.cc:661] Check failed: Thread::Current() != GetDebugThread() (Thread::Current()=0x7f44a18400, GetDebugThread()=0x7f44a18400) Expected event thread
A/art: art/runtime/runtime.cc:422] Runtime aborting...
A/art: art/runtime/runtime.cc:422] Aborting thread:
A/art: art/runtime/runtime.cc:422] "JDWP" prio=5 tid=4 WaitingForDebuggerSend
A/art: art/runtime/runtime.cc:422]   | group="" sCount=0 dsCount=0 obj=0x12c60280 self=0x7f44a18400
A/art: art/runtime/runtime.cc:422]   | sysTid=24137 nice=0 cgrp=default sched=0/0 handle=0x7f4b904450
A/art: art/runtime/runtime.cc:422]   | state=R schedstat=( 132066712 16401043 106 ) utm=9 stm=2 core=3 HZ=100
A/art: art/runtime/runtime.cc:422]   | stack=0x7f4b80a000-0x7f4b80c000 stackSize=1005KB
A/art: art/runtime/runtime.cc:422]   | held mutexes= "abort lock"
A/art: art/runtime/runtime.cc:422]   native: #00 pc 000000000047e2cc  /system/lib64/libart.so (_ZN3art15DumpNativeStackERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEEiP12BacktraceMapPKcPNS_9ArtMethodEPv+220)
A/art: art/runtime/runtime.cc:422]   native: #01 pc 000000000047e2c8  /system/lib64/libart.so (_ZN3art15DumpNativeStackERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEEiP12BacktraceMapPKcPNS_9ArtMethodEPv+216)
A/art: art/runtime/runtime.cc:422]   native: #02 pc 0000000000452434  /system/lib64/libart.so (_ZNK3art6Thread9DumpStackERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEbP12BacktraceMap+480)
A/art: art/runtime/runtime.cc:422]   native: #03 pc 00000000004403ac  /system/lib64/libart.so (_ZNK3art10AbortState10DumpThreadERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEPNS_6ThreadE+56)
A/art: art/runtime/runtime.cc:422]   native: #04 pc 0000000000440228  /system/lib64/libart.so (_ZNK3art10AbortState4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE+668)
A/art: art/runtime/runtime.cc:422]   native: #05 pc 0000000000433bfc  /system/lib64/libart.so (_ZN3art7Runtime5AbortEPKc+148)
A/art: art/runtime/runtime.cc:422]   native: #06 pc 00000000000e597c  /system/lib64/libart.so (_ZN3art10LogMessageD2Ev+1592)
A/art: art/runtime/runtime.cc:422]   native: #07 pc 00000000002f8458  /system/lib64/libart.so (_ZN3art4JDWP9JdwpState24AcquireJdwpTokenForEventEm+624)
A/art: art/runtime/runtime.cc:422]   native: #08 pc 00000000002f7b1c  /system/lib64/libart.so (_ZN3art4JDWP9JdwpState29SendRequestAndPossiblySuspendEPNS0_9ExpandBufENS0_17JdwpSuspendPolicyEm+248)
A/art: art/runtime/runtime.cc:422]   native: #09 pc 00000000002fcb08  /system/lib64/libart.so (_ZN3art4JDWP9JdwpState16PostClassPrepareEPNS_6mirror5ClassE+1380)
A/art: art/runtime/runtime.cc:422]   native: #10 pc 0000000000124a9c  /system/lib64/libart.so (_ZN3art11ClassLinker11DefineClassEPNS_6ThreadEPKcmNS_6HandleINS_6mirror11ClassLoaderEEERKNS_7DexFileERKNS9_8ClassDefE+804)
A/art: art/runtime/runtime.cc:422]   native: #11 pc 0000000000381d04  /system/lib64/libart.so (_ZN3artL25DexFile_defineClassNativeEP7_JNIEnvP7_jclassP8_jstringP8_jobjectS7_S7_+344)
A/art: art/runtime/runtime.cc:422]   native: #12 pc 00000000001dd40c  /system/framework/arm64/boot-core-libart.oat (???)
A/art: art/runtime/runtime.cc:422]   at dalvik.system.DexFile.defineClassNative(Native method)
A/art: art/runtime/runtime.cc:422]   at dalvik.system.DexFile.defineClass(DexFile.java:296)
A/art: art/runtime/runtime.cc:422]   at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:289)
A/art: art/runtime/runtime.cc:422]   at dalvik.system.DexPathList.findClass(DexPathList.java:418)
A/art: art/runtime/runtime.cc:422]   at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:54)
A/art: art/runtime/runtime.cc:422]   at com.android.tools.fd.runtime.IncrementalClassLoader$DelegateClassLoader.findClass(IncrementalClassLoader.java:90)
A/art: art/runtime/runtime.cc:422]   at com.android.tools.fd.runtime.IncrementalClassLoader.findClass(IncrementalClassLoader.java:62)
A/art: art/runtime/runtime.cc:422]   at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
A/art: art/runtime/runtime.cc:422]   at java.lang.ClassLoader.loadClass(ClassLoader.java:367)
A/art: art/runtime/runtime.cc:422]   at java.lang.ClassLoader.loadClass(ClassLoader.java:367)
A/art: art/runtime/runtime.cc:422]   at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
A/art: art/runtime/runtime.cc:422] Dumping all threads without appropriate locks held: thread list lock mutator lock

ฉันไม่รู้ว่าเกิดอะไรขึ้น แต่ตอนนี้ทำงานได้แล้ว มายากล!!!
Maxim Rabtsun

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

เกือบ 3 ปีต่อมาข้อผิดพลาดนี้ยังคงมีอยู่
Attila Tanyi

คำตอบ:


321

สำหรับฉันมันเกิดขึ้นเมื่อฉันมีเบรกพอยต์ในฟังก์ชั่นที่ซ้อนกัน Runnable.run() {}ในกรณีของฉันมันเป็นภายใน ไม่แน่ใจว่ามันเกิดขึ้นในฟังก์ชั่นซ้อนกันอื่น ๆ หรือไม่

ตัวอย่าง:

public class TouchEvent {
    public boolean HandleEvent(MotionEvent Event) {
        new Runnable() { @Override public void run() {
            int i=5;
            i++;
        }};
    }
}

หากมีการเบรกพอยต์ในบรรทัดใด ๆ ภายในระยะ () func A/art: art/runtime/jdwp/jdwp_event.cc:661] Check failed: Thread::Current() != GetDebugThread() (Thread::Current()=0x########, GetDebugThread()=0x########) Expected event threadก็เกิดปัญหากับข้อผิดพลาด

ข้อผิดพลาดนี้เกิดขึ้นในครั้งแรกที่พบคลาสไม่ใช่เมื่อมีการตีเบรกพอยต์ ดังนั้นมันเกิดขึ้นกับฉันเมื่อฉันก้าวเข้าสู่บรรทัดที่มีnew TouchEvent();ก่อนที่โค้ดใด ๆ ของ TouchEvent จะถูกเรียกใช้ (ก่อนตัวสร้าง)

ทางออกคือการลบจุดพัก (และวางไว้ที่อื่น)

แก้ไข:

ลืมที่จะพูดถึงดูเหมือนว่าจะเชื่อมโยงกับ API25 แต่ได้รับการรายงานสำหรับ API26 และ API27 ด้วย

แก้ไข:

วิธีการอื่นคือปิดใช้งานการเรียกใช้ทันทีแต่โปรดให้@ toobsco42เครดิตสำหรับสิ่งที่อยู่ด้านล่าง


28
มีการรายงานเรื่องนี้ใน code.google.com และฉันกำลังดำเนินการแก้ไขมัน code.google.com/p/android/issues/detail?id=227513
Dakusan

4
ฉันมี sdk 23 และสร้างเครื่องมือ 25.0.1 - ปัญหาเดียวกัน การลบเบรกพอยต์จะแก้ไขสิ่งนี้
Bonton255

2
นอกจากนี้คุณยังสามารถลบเบรกพอยต์กด Debug จากนั้นเมื่อแอปพลิเคชันรันได้แล้วให้เพิ่มกลับเข้าไปยังตำแหน่งที่คุณต้องการ ใช้งานได้แล้วอย่าลืมลบออกก่อนที่จะรีสตาร์ท
cometfish

3
ฉันเปลี่ยนอีมูเลเตอร์และปัญหาหายไป - เปลี่ยนกลับไปเป็นอีมูเลเตอร์เดิมและปัญหากลับมา เมื่อปัญหาปรากฏวิธีเดียวที่จะเอาชนะได้ (นอกเหนือจากการล้างจุดพักทั้งหมด - ไม่ต้องขอบคุณ) คือการปิดใช้งานการเรียกใช้ทันที การเปิดใช้งานการเรียกใช้ทันทีบนตัวจำลองปัญหานำปัญหากลับมา
แอนดี้

11
ปัญหาคือการผสมผสานของเบรกพอยต์ในหัวข้ออื่น ๆ ใน 7.1.1 กับการทำงานทันที ดังนั้นเปลี่ยน 3 ข้อใดข้อหนึ่งข้างต้นและมันจะหยุดการทำงานล้มเหลว
Warpzit

187

ในกรณีของฉันฉันต้องปิดการใช้งานทันที ดูเหมือนว่าการเรียกใช้ทันทีมีผลข้างเคียงทุกประเภทและสามารถเป็นหนึ่งในนั้นได้


47
หมายเหตุใน Android Studio นั้นอยู่ภายใต้ไฟล์ -> การตั้งค่า -> Build, Execution, Deployment -> Run ทันที
shortstuffsushi

มันเป็นกรณีของฉันด้วย! ขอบคุณ: D
francisco_ssb

9
นั่นคือหนึ่งชั่วโมงในชีวิตของฉันฉันจะไม่มีวันพบอีกเลย
Gary Bak

3
การทำงานกับหลาย ๆ เครื่องกับ Google อีกครั้งอย่างต่อเนื่องฉันจำเป็นต้องใช้มันเพื่อทำให้ฉันมีประสิทธิภาพมากขึ้นโดยประมาณ 4216% เมื่อในที่สุดมันก็ทำงานได้จากระยะไกลเข้ามาใกล้เพื่อรับเวลาที่เสียไป
แอนโธนี

ขอบคุณมากเลย ควรได้รับการทำเครื่องหมายเป็นคำตอบ;) คุณลักษณะที่น่าเกลียดนี้จะช่วยให้คุณได้ร้อยละห้าและทำให้คุณเสียร้อยดอลลาร์ :))
Amir Ziarati

50

ปัญหาเกี่ยวข้องกับ Android เวอร์ชัน 7.x ฉันลบจุดพักทั้งหมดในฟังก์ชั่นที่ซ้อนกันและทำงานได้ทดสอบกับ Android เวอร์ชัน 6.0 ด้วยและทำงานได้โดยไม่มีปัญหา

ตามการตอบสนองของทีมนักพัฒนาของ Google มันได้รับการแก้ไขในวันที่ 12/1/2016 และจะมีการนำไปใช้ในรุ่นถัดไป


พยายามทั้งหมดที่เป็นไปได้ความคิดเห็นข้างต้นช่วย! ขอบคุณมาก!
Stepan Maksymov

มันใช้งานได้แล้วคำตอบนี้น่าจะได้รับ ขอบคุณมาก! นอกจากนี้คุณสามารถลบการเรียกใช้ทันทีเป็นโซลูชันอื่น
ÖzerÖzcan

มันจะดีถ้ามีการเชื่อมโยงลิงค์เพื่อสนับสนุนสิ่งนี้;) "ตามการตอบสนองของทีมนักพัฒนาของ Google ก็จะได้รับการแก้ไขในวันที่ 12/1/2559 และจะนำไปใช้ในรุ่นถัดไป"
jabu.hlong

อาจเป็นการตอบกลับทางอีเมลยังคงได้รับข้อผิดพลาดในวันนี้และต้องลบจุดพัก
Jim Factor

Android 7.1.1 ยังคงเป็นเวอร์ชั่นของ Android ที่ใช้งานบน Pixelbook ฉันได้รับการพัฒนาตลอดเวลาใน Android Studio บน Pixelbook!
Jeff Lockhart

21

ฉันลบเบรกพอยต์ทั้งหมดและใช้งานได้ทดสอบกับ Emulator Pixel API 25

ในการลบเบรกพอยต์ทั้งหมด:

  • ไปที่ตัวเลือกดีบักเกอร์

  • คลิกที่ไอคอนสีแดงด้านล่างเพื่อหยุดการดีบั๊ก

  • คุณจะเห็นหน้าต่างที่นั่นคุณสามารถลบจุดพักได้ทั้งหมด

ดูเพิ่มเติมในโพสต์นี้: https://stackoverflow.com/a/42478994/5749462


16

นี่คือสาเหตุที่มีปัญหาบางอย่างกับจุดแก้ปัญหา ลบจุดแก้จุดบกพร่องทั้งหมดแล้วควรใช้งานได้


3
คุณสามารถใช้ทางลัด CTRL + SHIFT + F8 เพื่อยกเลิกการทำเครื่องหมายจุดพักทั้งหมดได้อย่างง่ายดาย
brunoramonalmeida

ทางลัดนี้ใช้ไม่ได้ตลอดเวลาขึ้นอยู่กับการตั้งค่าระบบปฏิบัติการและคีย์บอร์ดของคุณ
flame3

8

มันแปลกจริง ๆ ฉันปิดใช้งานการเรียกใช้ทันทีและปัญหาแก้ไขเอง


ใช่การทำงานทันทีบนอุปกรณ์ที่ต่ำกว่า Android 7.0 อาจทำให้เกิดปัญหานี้ได้อย่างง่ายดาย
egorikem

4

ปัญหาของฉันคือฉันมีเบรกพอยต์ที่คำสั่งนำเข้า


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


1

ทางออกที่ง่ายที่สุดคือพยายามหาอุปกรณ์หรืออีมูเลเตอร์อื่น (ขอบคุณผู้จัดการ AVD ที่เรามีให้เลือก) ที่จะทำงานได้อย่างมีเสน่ห์โดยไม่ต้องแก้ไขปัญหา


1

แอพของฉันยังทำงานขัดข้องก็ต่อเมื่ออยู่ในโหมดแก้ไขข้อบกพร่อง สำหรับเวอร์ชัน 3.5 - "เรียกใช้ทันที" ถูกแทนที่ด้วย "ใช้การเปลี่ยนแปลง" ดังนั้นฉันจึงไม่สามารถปิดใช้งานได้ วิธีแก้ปัญหาของฉันคือการเปิดแอปตามปกติ (ด้วยลูกศรสีเขียว) นำทางไปตามสถานที่ที่มันเคยเกิดข้อผิดพลาดจากนั้นจึงแนบตัวดีบักกับมัน:
ป้อนคำอธิบายรูปภาพที่นี่


0

การลบเบรกพอยต์จาก Runable.run () แก้ไขปัญหาสำหรับฉัน ฉันสามารถใช้เบรกพอยต์ที่รันไทม์ภายใน Runable.run () แต่ไม่ใช่ในเวลารวบรวม


0

พบกับปัญหาเดียวกันนี้ แต่เบรกพอยต์ของฉันคือบรรทัดแรกในฟังก์ชันซ้อนกันดังนั้นจะย้ายไปที่อื่นได้อย่างไร

ฉันสร้างวิธีส่วนตัวชั่วคราวและทำการร้องขอวิธีนั้นเป็นสิ่งแรกในฟังก์ชั่นจากนั้นฉันตั้งค่าเบรกพอยต์ในวิธีนั้น

เมื่อฉันเสร็จสิ้นการดีบักฉันลบวิธีการและการร้องขอ


0

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


0

การเริ่มทำงานล้มเหลวเมื่อเริ่มต้นด้วยดีบักเกอร์ รีสตาร์ท Android Studio 2.3.2 ... หยุดทำงานอย่างต่อเนื่อง ทำงานได้ดีในโหมดเรียกใช้ ฉันใส่ Log.d () หลังจาก onCreate ... และแก้ไขปัญหา! ไปคิด!


0

ลบคะแนนดีบั๊กทั้งหมดในแอปพลิเคชันของฉันทำงานได้ดีคุณสามารถใช้ ctrl + shift + f6 เพื่อลบคะแนนดีบั๊กทั้งหมด

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