双重调试(C / C ++和Java)在Android Studio 2.3.3中正常工作, minSdkVersion:22 , targetSdkVersion / compileSdkVersion:26
当我更新到 Android Studio 3.0.1 时, Java调试器正常,但 C / C ++调试器不起作用。我在 Java和C / C ++调试器之间单独测试,以找出哪个调试器不起作用。
Android Studio 3.0.1上的问题是 C / C ++调试器不起作用。发生了这样的错误:
无法回复握手数据包 com.jetbrains.cidr.execution.debugger.backend.lldb.LLDBDriverException: 无法回复握手数据包 com.jetbrains.cidr.execution.debugger.backend.lldb.LLDBDriver $ ThrowIfNotValid.throwIfNeeded(LLDBDriver.java:143) 在 com.android.tools.ndk.run.lldb.AndroidLLDBDriver.connectPlatform(AndroidLLDBDriver.java:308) 在 com.android.tools.ndk.run.lldb.AndroidLLDBDriver.loadForLaunch(AndroidLLDBDriver.java:158) 在 com.android.tools.ndk.run.lldb.AndroidLLDBDriver.loadForAttach(AndroidLLDBDriver.java:199) 在 com.android.tools.ndk.run.AndroidNativeAppDebugProcess.prepareTarget(AndroidNativeAppDebugProcess.java:98) 在 com.android.tools.ndk.run.AndroidNativeDebugProcess.doStart(AndroidNativeDebugProcess.java:113) 在 com.jetbrains.cidr.execution.debugger.CidrDebugProcess $ 3.run(CidrDebugProcess.java:307) 在 com.jetbrains.cidr.execution.debugger.CidrDebugProcess $ MyCommandProcessor.consume(CidrDebugProcess.java:724) 在 com.jetbrains.cidr.execution.debugger.CidrDebugProcess $ MyCommandProcessor.consume(CidrDebugProcess.java:714) 在 com.intellij.util.concurrency.QueueProcessor.lambda为$ null $ 0(QueueProcessor.java:106) 在 com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:223) 在 com.intellij.util.concurrency.QueueProcessor.lambda $ wrappingProcessor $ 1(QueueProcessor.java:106) 在 com.intellij.util.concurrency.QueueProcessor.lambda为$ null $ 2(QueueProcessor.java:203) 在 com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:223) 在 com.intellij.util.concurrency.QueueProcessor.lambda $ startProcessing $ 3(QueueProcessor.java:203) 在 com.intellij.openapi.application.impl.ApplicationImpl $ 2.run(ApplicationImpl.java:334) 在 java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511) 在java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:617) 在java.lang.Thread.run(Thread.java:745)
如何解决这个问题?
答案 0 :(得分:0)
Android Studio 3.1也存在双重调试问题。尝试使用不同的Emulator SDK级别。我无法使用SDK 16仿真器进行双重调试。它只适用于我使用SDK 24模拟器。
答案 1 :(得分:0)
我使用了AVD Pixel 2 XL API 22-x86-Google API(可以植根),并遇到了相同的问题“未能获得对握手数据包的答复”,并显示了日志:
Launching 'setMeasurement() (1)' on Pixel 2 XL API 22 - x86 - Google API
Running tests
$ adb shell am instrument -w -r -e debug true -e \
class 'com.my.package.MyClassTest#setMeasurement' \
com.my.package.test/androidx.test.runner.AndroidJUnitRunner
Waiting for application to come online: com.my.package | com.my.package.test
...
Waiting for application to come online: com.my.package | com.my.package.test
Connecting to com.my.package.test
Now Launching Native Debug Session
$ adb shell cat /data/local/tmp/lldb-server \
| sh -c 'cat > /data/data/com.my.package/lldb/bin/lldb-server
\ && chmod 700 /data/data/com.my.package/lldb/bin/lldb-server'
$ adb shell cat /data/local/tmp/start_lldb_server.sh \
| sh -c 'cat > /data/data/com.my.package/lldb/bin/start_lldb_server.sh \
&& chmod 700 /data/data/com.my.package/lldb/bin/start_lldb_server.sh'
Starting LLDB server:
failed to get reply to handshake packet
所以我试图重复命令(adb shell +本地运行的命令)-最后两个adb shell命令失败。检查电话文件目录结构,我发现:
对我有用的解决方法是在设置之前创建(错误?)目标文件夹:
adb shell
mkdir -p /data/data/com.my.package/lldb/bin
答案 2 :(得分:0)
简单的卸载和安装对我有帮助。
adb uninstall com.your.package