web-dev-qa-db-ja.com

デバッグモードで起動するとAndroidアプリがクラッシュする

debug modeで実行するとアプリがクラッシュしますが、普通に実行すると動作します。デバッガを付けたときに問題が起きると思います。

ログ:

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

私にとっては、ネストした関数にブレークポイントがあるときに発生しました。私の場合、それはRunnable.run(){}の中にありました。他の入れ子関数で発生するかどうかはわかりません。

例:

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

Run()関数内の任意の行にブレークポイントがあると、エラーA/art: art/runtime/jdwp/jdwp_event.cc:661] Check failed: Thread::Current() != GetDebugThread() (Thread::Current()=0x########, GetDebugThread()=0x########) Expected event threadでクラッシュします。

このエラーは、ブレークポイントがヒットしたときではなく、クラスが最初に検出されたときに発生します。そのため、TouchEventのコードが実行される前(コンストラクタの前)にnew TouchEvent();が含まれている行に入ったときに発生しました。

解決策は、ブレークポイントを削除する(そしてそれを他の場所に置く)ことです。

編集:

言及するのを忘れて、それはAPI25に結び付けられているようですが、API26とAPI27についても報告されています。

編集:

もう一つの解決策は インスタントランを無効にすることです 、しかしそのためにtoobsco42クレジットを与えてください。

305
Dakusan

私の場合は、インスタントランを無効にする必要がありました。 Instant Runにはあらゆる種類の副作用があり、そのうちの1つである可能性があるようです。

180
toobsco42

問題はAndroidのバージョン7.xに関連している、私は入れ子になった関数内のすべてのブレークポイントを削除し、それはあまりにもAndroidのバージョン6.0でテスト、そしてそれは問題なく動作しています。

Googleの開発者チームの回答によると、2016年12月1日に修正されており、次のリリースで適用される予定です。

45
hcknl

私はすべてのブレークポイントを削除し、それが機能し、Emulator Pixel API 25でテストしました。

すべてのブレークポイントを削除するには

  • デバッガオプションに移動します。

  • デバッグを停止するには、下の赤いアイコンをクリックしてください。

  • そこにウィンドウが表示されますので、すべてのブレークポイントを削除できます。

この記事で詳細を参照してください: https://stackoverflow.com/a/42478994/5749462

21

これはデバッグポイントに関する問題が原因です。すべてのデバッグポイントを削除すればそれははたらくはずです。

15
flame3

その本当に変な、私はインスタントランを無効にし、問題はそれ自体を解決した。

8
mbpakalin

私の問題は、import文にブレークポイントがあるということでした

4
egorikem

enter image description here

ウィンドウ5:デバッグで、[View Breakpoints]ボタンを使用します。

enter image description here

それらのすべてを選択解除

enter image description here

1
Nicoolasens

最も簡単な解決策は 他のデバイスやエミュレータを見つけようとすることです (回避策なしで魅力として動作するAVD Managerのおかげで)

1
yoAlex5

Runnable.run()からブレークポイントを削除することで問題は解決しました。 Runnable.run()の内部で実行時にブレークポイントを使用することができました。しかしコンパイル時ではない

0
Ankush

デバッガを起動したときだけクラッシュし始めます。 Android Studio 2.3.2を再起動しました...クラッシュし続けました。実行モードで正常に動作します。 onCreate ...の直後にLog.d()を入力して問題を解決しました。図に行きます!

0
IrvineCAGuy

これと同じ問題に遭遇したが、私のブレークポイントは入れ子関数の最初の行だったので、他の場所に移動する方法は?

一時的なプライベートメソッドを作成し、そのメソッドの呼び出しを関数内の最初のものにしてから、そのメソッドにブレークポイントを設定しました。

デバッグが終了したら、メソッドとその呼び出しを削除しました。

0
roobyroo

それは長いショットですが、私にとっては、使用されていないimportステートメントがあり、そのimportにネットワーク呼び出しを実行するコードがあるとクラッシュしましたが、削除すると、コードは正常にデバッグできました。

0
reidisaki