将jdb连接到Windows上的android模拟器的“无法连接到远程VM”

我一直试图连接jdb到android模拟器一段时间,并已经被反复满足:

  jdb -sourcepath ./src -attach localhost:8700

 java.io.IOException:shmemBase_attach失败:系统找不到指定的文件
        在com.sun.tools.jdi.SharedMemoryTransportService.attach0(本地方法)
        在com.sun.tools.jdi.SharedMemoryTransportService.attach(SharedMemoryTransportService.java:90)
        在com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:98)
        在com.sun.tools.jdi.SharedMemoryAttachingConnector.attach(SharedMemoryAttachingConnector.java:45)
        在com.sun.tools.example.debug.tty.VMConnection.attachTarget(VMConnection.java:358)
        在com.sun.tools.example.debug.tty.VMConnection.open(VMConnection.java:168)
        在com.sun.tools.example.debug.tty.Env.init(Env.java:64)
        在com.sun.tools.example.debug.tty.TTY.main(TTY.java:1010)

致命错误:
无法附加到目标虚拟机。

不太好。 绕过这个最好的方法是什么? 我在Windows 7 64位上运行。

目前这对我来说是工作 – 做一个套接字而不是共享内存连接。

> jdb -sourcepath。\ src -connect com.sun.jdi.SocketAttach:hostname = localhost,port = 8700

事先您需要做一些设置 – 例如,请参阅设置非eclipse调试器的这一组有用的细节 。 它包括一个很好的提示,用于设置初始断点 – 在主目录中创建或编辑jdb.ini文件,内容如下所示:

 停在com.mine.of.package.some.AClassIn:14 

他们将被加载并推迟到连接。

编辑:忘了参考Herong杨的页面 。

答案#1:映射您的主机文件中的本地主机,因为我链接到早些时候。 只是要确定。

答案2:如果你使用的是共享内存,比特大小很容易成为问题。 确保你在任何地方都使用相同的字宽。

尝试退出Android Studio。

由于ADB守护进程已经在运行,我在Mac上也遇到类似的问题。 一旦你退出任何正在运行的守护进程,你应该看到如下输出:

$ adb -d jdwp 28462 1939 ^C $ adb -d forward tcp:7777 jdwp:1939 $ jdb -attach localhost:7777 -sourcepath ./src Set uncaught java.lang.Throwable Set deferred uncaught java.lang.Throwable Initializing jdb ... > 

有关更多详细信息以及如何启动/停止守护进程,请参见我的其他答案 。