我一直试图连接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 ... >
有关更多详细信息以及如何启动/停止守护进程,请参见我的其他答案 。