2010-11-18 13 views
10

ben bir süre için android öykünücüsüne jdb bağlanmaya çalışıyorum üzerinde android öykünücüsüne jdb bağlayan "uzak VM için bağlanamadı" ve defalarca karşılanmıştır:Windows'un

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. 

Çok iyi değil. Bunu elde etmenin en iyi yolu nedir? Windows 7 64bit üzerinde çalışıyorum.

+0

Hata ayıklayıcı aracılığıyla bağlantı kurabilir misiniz? (Http://stackoverflow.com/questions/4199323/android-app-not-launching-on-emulator/4199575#4199575) –

+0

Hm, tüm yorumlanmıştır benim hosts dosyasına girdileri benziyor [buraya Cevabımı edin] dışarı, söyleyerek: # localhost ad çözümlemesi DNS içinde ele alınır. # \t 127.0.0.1 localhost # Bulundu \t :: 1 localhost –

+2

* Bir * cevap. Bazı Google Apps’tan, Windows’taki jdb’nin uzak bir VM’le paylaşılan bir hafıza bağlantısına sahip olduğu anlaşılıyor (http://www.herongyang.com/jtool/jdb_3.html). > çalýþtýrýr -Donanımı com.sun.jdi.SocketAttach: hostname = localhost, liman = 8700 Set yakalanmamış java.lang.Throwable Seti ertelenmiş yakalanmamış java.lang.Throwable biz farklı bağlantı türünü belirtebilirsiniz çıkıyor Başlatma jdb ... > En azından bağlandığı anlaşılıyor. –

cevap

11

Şu anda bu benim için çalışıyor - paylaşılan bir bellek bağlantısı yerine soket yapmak.

> çalýþtýrýr -sourcepath \ src -Donanımı com.sun.jdi.SocketAttach: hostname = localhost, liman =

bazı kurulum yapmanız gereken Önceden 8700 - örneğin, useful details on setting up a non-eclipse debugger bu kümesine bakın..

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

ve yüklenen ve bağlantı kadar ertelenmiş alırsınız: gibi içerikle oluşturmak veya ev dizininde bir jdb.ini dosyasını düzenlemek - Bu sizin ilk kesme noktası ayarlamak için iyi bir ucunu içerir.

düzenleme: Herong Yang's page referans unuttum. Android Studio bırakma

+0

+1! –

+0

Reddetme hakkında herhangi bir açıklama var mı? –

0

Yanıt 1: Daha önce bağlandığım gibi, localhost'u hosts dosyanızda eşleyin. Sadece emin olmak için.

Cevap # 2: Paylaşılan bellek kullanıyorsanız, bit boyutunda kolayca bir sorun haline gelebilir. emin'u her yerde aynı kelime genişliğini kullanıyorsunuz.

+0

Teşekkürler Mark - Açıkça paylaşılan belleği kullanmıyorum - en azından, doğru anladıysam android emülatörünün ne kullandığını bulmam gerektiğini düşünüyorum. Bir soket bağlantısıyla bağlayabildiğim, bunun olmadığını gösteriyor.Herong'un sayfasından yardım için –

0

deneyin.

Ben zaten çalışıyor nedeniyle ADB daemona Mac benzer bir sorun vardı. Eğer herhangi bir çalışan cinleri çıkın sonra aşağıdaki çıkış benzer görmelisiniz:

$ 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 ... 
> 

fazla ayrıntı ve nasıl cini başlatmak/durdurmak için benzer bir soruya my other answer bakınız.