2010-11-18 95 views
10

我一直在試圖JDB連接到Android模擬器,一小會兒連接加多寶Android模擬器,並已與多次接見:「無法連接到遠程虛擬機」在Windows

jdb -sourcepath ./src -attach localhost:8700 

java.io.IOException: shmemBase_attach failed: The system cannot find the file specified 
     at com.sun.tools.jdi.SharedMemoryTransportService.attach0(Native Method) 
     at com.sun.tools.jdi.SharedMemoryTransportService.attach(SharedMemoryTransportService.java:90) 
     at com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:98) 
     at com.sun.tools.jdi.SharedMemoryAttachingConnector.attach(SharedMemoryAttachingConnector.java:45) 
     at com.sun.tools.example.debug.tty.VMConnection.attachTarget(VMConnection.java:358) 
     at com.sun.tools.example.debug.tty.VMConnection.open(VMConnection.java:168) 
     at com.sun.tools.example.debug.tty.Env.init(Env.java:64) 
     at com.sun.tools.example.debug.tty.TTY.main(TTY.java:1010) 

Fatal error: 
Unable to attach to target VM. 

不太好。繞過這個最好的方法是什麼?我在Windows 7 64位上運行。

+0

你能通過調試器連接嗎? [檢查我的答案在這裏](http://stackoverflow.com/questions/4199323/android-app-not-launching-on-emulator/4199575#4199575) – 2010-11-18 22:21:37

+0

嗯,看起來像我的主機文件中的條目都評論說:#本地主機名稱解析是在DNS本身處理。 #\t 127.0.0.1 localhost #\t :: 1 localhost – 2010-11-18 22:29:25

+2

找到* an * answer。從一些谷歌搜索看來,Windows上的jdb默認爲與遠程VM的共享內存連接(http://www.herongyang.com/jtool/jdb_3.html)。結果我們可以指定不同的連接類型: >加多寶-connect com.sun.jdi.SocketAttach:主機=本地主機,端口= 8700 設置未捕獲的java.lang.Throwable 集遞延未捕獲的java.lang.Throwable 正在初始化jdb ... > 這似乎是連接,至少。 – 2010-11-18 22:34:44

回答

11

目前這對我來說是工作 - 製作套接字而不是共享內存連接。

>加多寶-sourcepath的\ src -connect com.sun.jdi.SocketAttach:主機=本地主機,端口= 8700

在此之前,你需要做一些設置 - 例如,看到這組useful details on setting up a non-eclipse debugger。它包括一個很好的提示設置你的初始斷點 - 創建或編輯你的home目錄下的文件jdb.ini,與內容,如:

stop at com.mine.of.package.some.AClassIn:14

,他們會得到加載並推遲到連接。

編輯:忘了引用Herong Yang's page

+0

+1鏈接到Herong網頁的幫助! – 2012-10-19 22:41:49

+0

downvote的任何解釋? – 2015-01-28 15:52:04

0

答案#1:在我的主機文件中映射localhost,正如我之前鏈接的那樣。只是要確定。

答案#2:如果你使用的是共享內存,比特大小很容易成爲問題。製作肯定你在任何地方都使用相同的字寬。

+0

感謝馬克 - 我沒有明確地使用共享內存 - 至少我想我需要找出什麼是Android模擬器正在使用,如果我理解正確。我可以用套接字連接的事實表明事實並非如此。 – 2010-11-19 21:58:53

0

嘗試退出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 ... 
> 

my other answer對一個類似問題的更多細節,以及如何啓動/停止守護進程。