【发布时间】:2011-05-12 08:01:35
【问题描述】:
我一直在尝试将jdb连接到android模拟器一段时间,并且反复遇到:
jdb -sourcepath ./src -attach localhost:8700
java.io.IOException: shmemBase_attach failed: 系统找不到指定的文件
在 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)
致命错误:
无法附加到目标 VM。
不太好。解决这个问题的最佳方法是什么?我在 Windows 7 64bit 上运行。
【问题讨论】:
-
你能通过调试器连接吗? Check my answer over here
-
嗯,看起来我的主机文件中的条目都被注释掉了,说:# localhost 名称解析是在 DNS 本身内处理的。 # 127.0.0.1 本地主机 # ::1 本地主机
-
找到一个答案。从一些谷歌搜索来看,Windows 上的 jdb 似乎默认为与远程 VM (herongyang.com/jtool/jdb_3.html) 的共享内存连接。结果我们可以指定一个不同的连接类型: > jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8700 Set uncaught java.lang.Throwable Set deferred uncaught java.lang.Throwable Initializing jdb ... >至少,这似乎是有联系的。
-
我仍然建议将您的 localhost 指向 127.0.0.1。 DNS 不应该接触它......您的 DNS 可能会返回 IPv6 而不是 IPv4 地址。你无法控制它。你可以控制你的“主机”。
标签: java windows debugging android-emulator jdb