2010-11-18 1 views
10

나는 잠시 동안 안드로이드 에뮬레이터에 JDB를 연결하기 위해 노력했습니다에 안드로이드 에뮬레이터에 JDB를 연결하는 "원격 VM에 연결하는 데 실패했습니다", 그리고 반복적으로 충족 :윈도우

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) –

+0

흠, 내 호스트 파일의 항목이 모두 주석 처리 된 것처럼 보입니다. # localhost 이름 확인은 DNS 자체 내에서 처리됩니다. # \t 127.0.0.1 localhost # \t :: 1 localhost –

+2

발견 된 * 답변. 일부 인터넷 검색에서 Windows의 jdb는 원격 VM (http://www.herongyang.com/jtool/jdb_3.html)과 공유 메모리 연결을 기본값으로 사용하는 것으로 나타납니다. > JDB -connect com.sun.jdi.SocketAttach : 호스트 이름 = 로컬 호스트, 포트 = 8700 설정 캐치되지 않는 java.lang.Throwable의 설정 연기 캐치되지 않는 java.lang.Throwable의 우리는 다른 연결 유형을 지정할 수 있습니다 밝혀 jdb 초기화 중 ... > 연결하는 것으로 보입니다. –

답변

11

현재 공유 메모리 연결이 아닌 소켓 만들기 -이게 나를 위해 일하고있다.

> JDB의 -sourcepath \ SRC -connect com.sun.jdi.SocketAttach : 호스트 이름 = 로컬 호스트, 포트 =

당신은 몇 가지 설정을 할 필요가 사전에 8700 - 예를 들어, useful details on setting up a non-eclipse debugger의이 세트를 참조하십시오..

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

을하고로드 및 연결까지 연기거야 : 같은 내용으로 작성하거나 홈 디렉토리에 jdb.ini 파일을 편집 - 그것은 당신의 초기 중단 점을 설정하기위한 좋은 팁이 포함되어 있습니다.

편집 : 참조를 잊어 버렸습니다 Herong Yang's page.

+0

+1 Herong 님의 페이지에서 도움을 청합니다! –

+0

downvote에 대한 설명? –

0

Answer # 1 : 이전에 링크 된 호스트 파일의 localhost를 매핑하십시오. 확인차.

Answer # 2 : 공유 메모리를 사용하는 경우 비트 크기가 쉽게 문제가 될 수 있습니다. 으로 지정하면 어디에서나 동일한 단어 폭을 사용하게됩니다.

+0

Thanks Mark - 공유 메모리를 명시 적으로 사용하고 있지 않습니다. 적어도 제대로 이해한다면 안드로이드 에뮬레이터가 사용하고있는 것을 알아야 할 것 같습니다. 소켓 연결로 연결할 수 있다는 사실은 그렇지 않다는 것을 암시합니다. –

0

Android Studio를 종료 해보세요.

이미 Mac에서 ADB 데몬이 실행 중이므로 비슷한 문제가있었습니다. 당신이 실행중인 데몬을 종료하면 다음과 유사한 출력을 보게됩니다 :

$ 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를 참조하십시오.