java - jdb 给出 java.net.SocketException : Connection reset

标签 java android jdb

我一直在尝试运行 jdb 来尝试将其附加到我的 Android 设备上的进程。

我尝试过的命令如下:

adb forward tcp:12345 jdwp:4127

jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=12345

我们可以假设 pid 4127 的进程仍然存在。

但是,输入这2条命令后,我收到了如下错误消息:

java.net.SocketException: Connection reset

at java.net.SocketInputStream.read(SocketInputStream.java:209)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at com.sun.tools.jdi.SocketTransportService.handshake(SocketTransportService.java:130)
at com.sun.tools.jdi.SocketTransportService.attach(SocketTransportService.java:232)
at com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:116)
at com.sun.tools.jdi.SocketAttachingConnector.attach(SocketAttachingConnector.java:90)
at com.sun.tools.example.debug.tty.VMConnection.attachTarget(VMConnection.java:519)
at com.sun.tools.example.debug.tty.VMConnection.open(VMConnection.java:328)
at com.sun.tools.example.debug.tty.Env.init(Env.java:63)
at com.sun.tools.example.debug.tty.TTY.main(TTY.java:1066)

我注意到一个奇怪的行为,即仅当我的 1 个应用程序运行时才会出现此输出。这可能是由于程序运行时线程、进程或端口冲突造成的吗?

当我关闭特定应用程序时,大多数时候我可以获得以下输出:

Set uncaught java.lang.Throwable
Set deferred uncaught java.lang.Throwable
Initializing jdb ...
> Input stream closed.

我还尝试通过以下步骤在管理员模式下运行命令提示符:

netsh advfirewall set global StatefulFTP disable
adb forward tcp:12345 jdwp:4127
jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=12345

输出如下:

java.io.IOException: handshake failed - connection prematurally closed
        at com.sun.tools.jdi.SocketTransportService.handshake(SocketTransportService.java:136)
        at com.sun.tools.jdi.SocketTransportService.attach(SocketTransportService.java:232)
        at com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:116)
        at com.sun.tools.jdi.SocketAttachingConnector.attach(SocketAttachingConnector.java:90)
        at com.sun.tools.example.debug.tty.VMConnection.attachTarget(VMConnection.java:519)
        at com.sun.tools.example.debug.tty.VMConnection.open(VMConnection.java:328)
        at com.sun.tools.example.debug.tty.Env.init(Env.java:63)
        at com.sun.tools.example.debug.tty.TTY.main(TTY.java:1066)

Fatal error:
Unable to attach to target VM.

最佳答案

尝试退出 Android Studio。

问题是 Android Studio 保持其 ADB 运行,这与您的冲突。请参阅my answer到您的类似问题了解更多详细信息。

关于java - jdb 给出 java.net.SocketException : Connection reset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37939269/

相关文章:

java - instanceOf 和 () 强制转换与 lambda 内的 Class.isInstance 和 Class.cast 方法引用进行比较

android - 有没有办法以编程方式在 Android 设备上执行出厂重置?

android - AutoCompleteTextView - 下拉行在 Android 2.3 中滚动时变黑

android - 连接 Android 设备时 shmemBase_attach 失败

java - 如何使用具有多种数据类型的 hashmap 作为请求参数?

java - 如何访问 ArrayList 中的上一个/下一个元素?

java - Spring Boot - 处理 JSON 或 HTML 的错误 Controller

java - Libgdx 在 Android 外部存储中保存/加载文件

java - 是否可以在特定字节码指令处设置断点?

java - 如何使用 jdb 调试 lambda 表达式