Подтвердить что ты не робот

Не удалось открыть выбранный порт отладки VM (8700)

Я пытаюсь отладить исходный код Android с помощью Eclipse, следуя инструкциям, найденным по адресу:

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

Я загрузил источник и получил его для сборки. Я следую инструкциям в ссылке выше, и все нормально, пока я не запустил команду ddms. На этом этапе, если Eclipse запущен, я получаю сообщение об ошибке "Не удалось открыть выделенный отладочный порт VM (8700)". Если я закрою Eclipse, тогда ddms будет работать без проблем, и я смогу процессы на эмуляторе. Однако, если я теперь открываю Eclipse, я получаю ту же ошибку.

В любом случае, независимо от того, что я делаю, если я пытаюсь удалять отладки, он всегда терпит неудачу с "Не удалось подключиться к удаленной виртуальной машине".

Любые идеи?

Спасибо

4b9b3361

Ответ 1

Похоже, у вас есть две проблемы:

  • Вы пытаетесь запустить DDMS дважды. Вам не нужно запускать свободно стоящую версию DDMS, так как есть версия, интегрированная в Eclipse как часть подключаемого модуля Android, Если вы перейдете на перспективу DDMS в Eclipse, я уверен, что вы обнаружите, что доступны все те же функции.

  • Вы не сказали DDMS, какую VM вы хотите отлаживать на localhost: 8700.. Прежде чем пытаться установить удаленное отладочное соединение, вы должны перейти в точку DDMS и нажать на system_process (или любой другой процесс, который вы хотите отлаживать).

Ответ 2

Файл Windows Host, который перепутался, находится в C:\WINDOWS\system32\drivers\etc, и он должен содержать следующую строку:

127.0.0.1 localhost

Если это не сработает, попробуйте сделать следующие изменения в Eclipse.

В окне "Окно" → "Настройки" → Android → DDMS:

  • Установите базовый локальный порт отладчика на "8601"
  • Установите флажок "Использовать ADBHOST", и значение должно быть 127.0.0.1

Ответ 3

Я решил его, завершив процесс "adb.exe" через диспетчер задач, а затем перезагрузив SDK через Windows- > Preference. Я запускаю Eclipse Indigo на Win 7 64-bit.

Ответ 4

У меня тоже была эта проблема (Windows 7), хотя в файле my/Windows/system32/drivers/etc/hosts уже был 127.0.0.1 localhost.

Я попытался изменить информацию и порт ADBHOST в настройках eclipse, но ничего не сделал.

netstat -b показывает "127.0.0.1" в качестве исходного адреса для adb и эмулятора, но всегда указывает имя моего компьютера как "чужой адрес". По подозрению, я пробовал отлаживать с моей машиной не подключен к любой сети (нет WiFi, ничего не подключено)... и это сработало! (DDMS смогла подключиться к виртуальной машине на эмулированном устройстве, и я смог отлаживать ее просто отлично).

Я думаю, что сообщения, отправленные DDMS &/или adb, не остаются на моем локальном компьютере (они отправляются на мой локальный маршрутизатор). (Это просто предположение, я не знаю, как окончательно проверить это.) IOW, loopback не работал должным образом.

Поскольку у меня уже было 127.0.0.1 в моих локальных хостах, я добавил локальный адрес подсети моей машины в файл моих хостов, предполагая, что DDMS/adb может использовать этот адрес (по сравнению с 127.0.0.1). Это, казалось, решило проблему для меня.

Итак, теперь мой файл hosts имеет следующие строки:

127.0.0.1       localhost
::1             localhost
192.168.1.102       localhost

(Локальный адрес IPv4 для моей машины - 192.168.1.102. Вы можете проверить свою команду с помощью команды ipconfig.)

(Я наткнулся на некоторые веб-страницы, в которых можно настроить адаптера виртуальной сети для Windows, который обрабатывает loopback, например Настройка адаптера Microsoft Loopback (от Oracle Distilled ), но не успели принять это и посмотреть, не является ли это жизнеспособным решением для всего этого.)

Ответ 5

Я решил это, открыв диспетчер задач Windows и закрыв процесс "adb.exe". Затем закройте затмение и снова закройте его. Он начнется правильно, без ошибок.

Ответ 6

Это для справки. Но я думаю, это могло бы соответствовать вашему делу.

Порт 8700 - очень специальный порт для ddms; нет способа изменить порт. Порт 8700 используется для агрегирования пакета с каждой виртуальной машины Dalvik.

Будут два случая:

case 1) Если вы установите "Базовый локальный порт отладчика" (в диалоговом окне предпочтений ddms для Eclipse) до 8700, вы увидите сообщение об ошибке "Невозможно связать с локальным 8700 для отладчика", каждый раз при запуске ddms. Но не проблема, потому что если ddms не сможет привязать 8700 к первой VM, то будет подключен к 8701, а затем 8702 и т.д.

case 2) Даже если вы установите "Базовый локальный порт отладчика" (в диалоговом окне предпочтений ddms для Eclipse) до 8600, вы можете увидеть ошибку - "Невозможно связать локальный 8700 для отладчика", в некоторых случаях. Поскольку, если ваше устройство имеет больше или равно 100 виртуальных машин dalvik, назначение портов каждой виртуальной машине, начиная с порта 8600, может достигать 8700 портов. Но проблема не возникает, как в случае 1).

Итак, если вы действительно не хотите видеть ошибку, вы должны установить "Базовый локальный порт отладчика" в диалоговом окне предпочтений ddms Eclipse для 8701 или выше.

Автономный ddms или монитор Android используют другой файл настроек из Eclipse, поэтому он может не создавать такие проблемы.

~

Ответ 7

Имела ту же проблему, меня привлекли разные номера портов в консольном выпуске (где я запускал ddms)

Затем из документации я узнал, что 8600 является номером базового порта по умолчанию. Каждый новый процесс использует следующий доступный порт (8601,8602,...). Кроме того, 8700 - это номер активного порта по умолчанию (указывающий текущий выбранный процесс в dbms)

Ниже приведены шаги по отладке исходных и приложений Android

  • Запустить эмулятор
  • Запуск ddms
  • Откройте Eclipse (он может жаловаться на невозможность подключения к 8600. Это связано с тем, что когда Eclipse запускается, и если у вас есть Android-плагин, он загружает ddms. Поскольку у нас уже есть ddms, подключенные к устройству, подключиться второй раз не будет работать)
  • В ddms выберите поток, который вы хотите отлаживать (когда вы выделите его, он покажет вам порты, которые он использует, а также 8700 (например, "8649/8700" ). Это означает, что вы можете использовать оба порта для подключения к этому процессу
  • Из eclipse, используя конфигурацию удаленной отладки, подключитесь к любому процессу, который вам нужен (проще всего выделить процесс изнутри ddms, а затем подключиться к 8700).

Ответ 8

Эта проблема возникает, когда вы используете другую виртуальную машину с тем же номером порта. В качестве примера вы используете полный пакет Android SDk, который вы загрузили с сайта разработчика Android. Теперь вы хотите использовать Eclipse и подключить ADT, SDK. Существует высокая вероятность возникновения такого типа ошибок. Это произошло со мной. Чтобы преодолеть эти трудности, вы можете:
  Окно-Настройки-Android-Выберите DDMS-Изменить базовый локальный порт отладчика (используйте 8601 вместо 8600).
Он может работать. Благодаря

Ответ 9

Я сделал это, перезагрузив компьютер

Ответ 10

Просто для полноты: (на win 7/Vista) не только вы должны убедиться, что строка

127.0.0.1 localhost

присутствует в

C:\WINDOWS\system32\drivers\etc

вам также нужно прокомментировать все ваши другие локальные виртуальные хосты с 127.0.0.1. Скорее всего, это тот случай, если вы разрабатываете веб-материал на одном компьютере и устанавливаете его раньше, когда разные имена хостов возвращаются к локальным.

Ответ 11

Я решил проблему ТОЛЬКО закрытой андроид-студией, поэтому затмение может получить ddms

Ответ 12

Когда я выполняю монитор в $ ANDROID_HOME/tools/monitor в Ubuntu 16.04, он показывает

Не удалось открыть выбранный порт отладки виртуальной машины (8700). Убедитесь, что у вас нет другого экземпляра DDMS или работающего плагина eclipse. Если он используется чем-то другим, выберите новый номер порта в настройках.

Я пытался сделать следующее:

Под окном → Настройки → Android → DDMS:

Установите базовый локальный порт отладчика на "8601". Установите флажок "Использовать ADBHOST", и значение должно быть 127.0.0.1.

Но все равно всплывает диалог.

Затем я сделал следующее:

[email protected]:~$ netstat -apn |grep 8700
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:8700          0.0.0.0:*               LISTEN      5044/java       
[email protected]:~$ kill -9 5044
[email protected]:~$ monitor

Сделав это, он решил мою проблему.

Не знаю почему, но у меня это работает.

Ответ 13

Пожалуйста, попробуйте следующие шаги

Android Studio 3.2.1 version Tool → SDK Version → Build, Execution, Deployment → Instant Run, снимите флажок Включить Instant Run и нажмите Ok