web-dev-qa-db-fra.com

L'application Android se bloque lors du lancement en mode débogage

Lorsque je lance le mode debug , l'application se bloque, mais lorsque je l'exécute normalement, cela fonctionne ... Je pense que le problème se produit lorsque le débogueur est connecté.

Bûche:

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
254
Maxim Rabtsun

Pour moi, cela s'est produit quand j'ai un point d'arrêt dans une fonction imbriquée. Dans mon cas, c'était dans Runnable.run () {}. Pas sûr que cela se produise dans d'autres fonctions imbriquées.

Exemple:

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

S'il y a un point d'arrêt sur une ligne quelconque de la fonction run (), elle se bloque avec l'erreur A/art: art/runtime/jdwp/jdwp_event.cc:661] Check failed: Thread::Current() != GetDebugThread() (Thread::Current()=0x########, GetDebugThread()=0x########) Expected event thread.

Cette erreur se produit la première fois que la classe est rencontrée, PAS lorsque le point d'arrêt est atteint. Cela m'est donc arrivé lorsque je suis entré dans une ligne qui avait new TouchEvent();, avant qu'aucun code de TouchEvent ne soit exécuté (avant le constructeur).

La solution consiste à supprimer le point de rupture (et le mettre ailleurs).

Modifier:

Oublié de mentionner, il semble être lié à API25, mais a été signalé pour API26 et API27 aussi.

Modifier:

Une autre solution consiste à désactiver Instant Run , mais merci d'en attribuer le crédit à toobsco42 ci-dessous.

297
Dakusan

Dans mon cas, j'ai dû désactiver Instant Run. Il semble qu'Instant Run ait toutes sortes d'effets secondaires et cela peut en être un.

174
toobsco42

Le problème est lié à la version Android 7.x, j'ai supprimé tous les points d'arrêt des fonctions imbriquées et cela a fonctionné, testé avec la version 6.0 d'Android aussi, et cela fonctionne sans problème.

Selon la réponse de l'équipe de développeurs Google, il a été corrigé le 12/01/2016 et sera appliqué dans la prochaine version.

44
hcknl

J'ai supprimé tous les points d'arrêt et cela a fonctionné, testé avec Emulator Pixel API 25.

Pour supprimer tous les points d'arrêt:

  • Aller à l'option de débogage.

  • Cliquez sur l'icône rouge ci-dessous pour arrêter le débogage.

  • Vous verrez une fenêtre où vous pouvez supprimer tous les points d'arrêt.

Voir plus dans cet article: https://stackoverflow.com/a/42478994/5749462

21
creonilso rodrigues

Cela est dû à un problème avec les points de débogage. Supprimez tous les points de débogage et cela devrait alors fonctionner. 

15
flame3

C'est vraiment bizarre, j'ai désactivé Instant Run et le problème s'est résolu tout seul.

7
mbpakalin

Mon problème était que j'avais un point d'arrêt à la déclaration d'importation

4
egorikem

 enter image description here

Dans la fenêtre 5: Débogage, utilisez le bouton "Afficher les points d'arrêt".

 enter image description here

DésélectionnerTous 

 enter image description here

1
Nicoolasens

La solution la plus simple est de trouver un autre périphérique ou un autre émulateur (merci à AVD Manager de choisir) qui fonctionnera comme un charme sans solution de rechange

1
yoAlex5

Supprimer le point d'arrêt de Runnable.run () a résolu le problème pour moi. J'ai pu utiliser des points d'arrêt au moment de l'exécution dans Runnable.run (). Mais pas au moment de la compilation

0
Ankush

Commencer à planter uniquement lors du démarrage avec le débogueur. Android Studio 2.3.2 redémarré ... continue de planter. Fonctionne bien en mode Exécution. Je mets dans un Log.d () juste après onCreate ... et ça résout le problème! Allez comprendre!

0
IrvineCAGuy

Couru dans ce même problème, mais mon point d'arrêt était la première ligne de la fonction imbriquée alors comment le déplacer ailleurs?

J'ai créé une méthode privée temporaire et en ai fait un appel la première chose dans la fonction, puis j'ai défini le point d'arrêt dans cette méthode.

Lorsque j'ai terminé le débogage, j'ai supprimé la méthode et son invocation.

0
roobyroo

c'est une longue tentative, mais pour moi, lorsque j'ai une instruction d'importation qui n'est pas utilisée et que le code d'importation est utilisé pour le code des appels réseau, il s'est écrasé mais lors de sa suppression, le code a pu déboguer normalement. 

0
reidisaki