No se pudo abrir el puerto de depuración de VM seleccionado (8700)

Estoy intentando depurar la fuente del androide usando Eclipse siguiendo las instrucciones encontradas en:

Http://source.android.com/using-eclipse

He descargado la fuente, y lo he conseguido para construir. Sigo las instrucciones en el enlace de arriba y todo está bien hasta que ejecute el comando ddms. En este punto, si Eclipse se está ejecutando, obtengo el error 'No se pudo abrir el puerto de depuración de VM seleccionada (8700)'. Si cierro Eclipse, entonces ddms se ejecuta sin ningún problema, y ​​puedo el los procesos en el emulador. Sin embargo, si ahora abra Eclipse, consigo el mismo error.

En cualquier caso, no importa lo que haga, si intento depurar a distancia, siempre falla con 'No se pudo conectar a la VM remota'.

¿Algunas ideas?

Gracias

Parece que tienes dos problemas:

  1. Está intentando ejecutar DDMS dos veces. No es necesario ejecutar la versión gratuita de DDMS ya que hay una versión integrada en Eclipse como parte del complemento de Android. Si cambia a la perspectiva de DDMS en Eclipse, estoy seguro de que encontrará que todas las mismas características están disponibles.

  2. No le has dicho a DDMS qué VM quieres depurar en localhost: 8700. Antes de intentar establecer su conexión de depuración remota, debe ir a la perspectiva de DDMS y hacer clic en system_process (o cualquier proceso que desee depurar).

El archivo de Host de Windows que está desordenado está en C:\WINDOWS\system32\drivers\etc , y debe contener esta línea:

 127.0.0.1 localhost 

Si eso no funciona, intente realizar los siguientes cambios en Eclipse.

En Ventana -> Preferencias -> Android -> DDMS:

  • Establezca el puerto de depurador local base en "8601"
  • Marque la casilla que dice "Use ADBHOST" y el valor debe ser 127.0.0.1

Lo solucioné finalizando el proceso "adb.exe" a través del Administrador de tareas y luego recargando el SDK a través de Windows-> Preferencia .. Estoy ejecutando Eclipse Indigo en Win 7 de 64 bits.

Lo solucioné abriendo el administrador de tareas de Windows y cerrando el proceso "adb.exe". Luego cierre el eclipse y vuelva a abrirlo. Se iniciará correctamente sin ningún error.

Yo estaba teniendo ese problema también (Windows 7), aunque mi archivo / Windows / system32 / drivers / etc / hosts ya tenía 127.0.0.1 localhost en él.

Intenté cambiar la información de ADBHOST y el puerto en las preferencias de eclipse, pero eso no hizo nada.

netstat -b muestra '127.0.0.1' como la dirección de origen de adb y el emulador, pero siempre lista el nombre de mi máquina como "dirección externa". En una corazonada, traté de depurar con mi máquina no conectada a ninguna red (no WiFi, nada conectado) … y funcionó! (DDMS fue capaz de conectarse a la máquina virtual en el dispositivo emulado y pude depurar muy bien.)

Creo que los mensajes enviados por DDMS y / o adb no se quedan en mi máquina local (se están enviando a mi enrutador local). (Es sólo una suposición, no sé cómo probar conclusivamente que.) IOW, loopback no estaba funcionando como debería.

Puesto que ya tenía 127.0.0.1 en mis localhosts, agregué la dirección de la subred local de mi máquina en mi archivo de los anfitriones, adivinando que DDMS / adb pudo usar esa dirección (contra 127.0.0.1). Eso parecía resolver el problema para mí.

Así que ahora mi archivo de hosts tiene estas líneas:

  127.0.0.1 localhost
 :: 1 localhost
 192.168.1.102 localhost

(La dirección IPv4 local de mi máquina es 192.168.1.102 . Puede comprobar la suya con el comando ipconfig .)

(Me encontré con algunas páginas web que la forma de configurar un adaptador de red virtual para Windows que maneja bucle, por ejemplo, la configuración de un Microsoft Loopback Adapater (de Oracle destilado) , pero no han tenido tiempo para tomar eso y ver si eso es viable Solución a todo esto, también.)

Tenía el mismo problema, diferentes números de puerto en la salida de la consola (donde lanzar ddms) me llamó la atención

A continuación, de la documentación , me enteré de que 8600 es el número de puerto base predeterminado. Cada nuevo proceso utiliza el siguiente puerto disponible (8601,8602, …). Además, 8700 es el número de puerto activo predeterminado (que indica el proceso actualmente seleccionado en dbms)

Estos son los pasos para depurar aplicaciones + de origen de Android

  1. Emulador de ejecución
  2. Ejecutar ddms
  3. Open Eclipse (Puede quejarse de no poder conectarse a 8600. Esto se debe a que, cuando Eclipse se inicia y si tiene un complemento de Android, arranca ddms. Ya que ya tenemos un ddms conectado al dispositivo, tratando de conectarnos Segunda vez no funcionará)
  4. En los ddms, seleccione un subproceso que desee depurar (cuando lo resalte, le mostrará los puertos que está utilizando, así como 8700 (por ejemplo, "8649/8700"). Esto significa que puede utilizar ambos puertos para conectarse a este proceso
  5. Desde eclipse, usando la configuración de depuración remota, conéctese a cualquier proceso que desee (lo más fácil es resaltar el proceso desde ddms y luego conectarse a 8700)

Este problema de tipo se produce cuando está utilizando otra VM con el mismo número de puerto. Como ejemplo, está utilizando el paquete completo de Android SDk que ha descargado del sitio web de desarrolladores de android. Ahora desea utilizar Eclipse y conectado ADT, SDK. Existe una alta probabilidad de que ocurra este tipo de error. Me pasó a mi. Para superar estas dificultades puede hacer:
Ventana-Preferencias-Android- Seleccione DDMS- Cambiar el puerto local de depuración local (use 8601 en lugar de 8600).
Puede funcionar. Gracias

Lo hice reiniciando mi computadora

Sólo para la integridad: (en ganar 7 / Vista), no sólo tiene que asegurarse de línea

 127.0.0.1 localhost 

Está presente en

 C:\WINDOWS\system32\drivers\etc 

Usted también necesita comentar hacia fuera todos sus otros anfitriones virtuales locales que resuelven de 127.0.0.1. Esto es muy probablemente el caso si usted está desarrollando cosas web en la misma máquina y configurarlo antes para diferentes nombres de host de bucle de vuelta a local.

Esto es para referencia. Pero supongo que esto podría coincidir con su caso.

Puerto 8700 es puerto muy especial para ddms; No hay manera de cambiar el puerto. El puerto 8700 se utiliza para agregar el paquete de cada VM de Dalvik.

Habrá dos casos;

Caso 1) Si establece "Base local debugger port" (en el diálogo de preferencias de ddms de Eclipse) a 8700, verá error – "No se puede enlazar a 8700 local para depurador", cada vez que se inicia ddms. Pero no hay problema, porque si los ddms no podían enlazar 8700 a la primera VM, entonces estarían conectados a 8701, y luego a 8702 y así sucesivamente.

Caso 2) Incluso si establece "Base local debugger port" (en el diálogo de preferencias Eclipse ddms) a 8600, puede ver error – "No se puede vincular a local 8700 para depurador", en algunos casos. Porque, si su dispositivo tiene más o igual a 100 VMs de dalvik, la asignación de puertos a cada VM a partir del puerto 8600 puede alcanzar el puerto 8700. Pero, no ocurre ningún problema como en el caso 1).

Por lo tanto, si realmente no desea ver el error, debe establecer el "puerto de depurador local base" en el diálogo de preferencias ddms de Eclipse a 8701 o superior.

Los ddms autónomos o el monitor de android utilizan archivos de configuración diferentes de Eclipse, por lo que no puede causar este tipo de problemas.

~

He resuelto el problema por sólo cerca de estudio de Android para que el eclipse puede obtener ddms

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.