Не удалось открыть выбранный порт отладки VM (8700)
Я пытаюсь отладить исходный код Android с помощью Eclipse, следуя инструкциям, найденным по адресу:
http://source.android.com/using-eclipse
Я загрузил источник и получил его для сборки. Я следую инструкциям в ссылке выше, и все нормально, пока я не запустил команду ddms. На этом этапе, если Eclipse запущен, я получаю сообщение об ошибке "Не удалось открыть выделенный отладочный порт VM (8700)". Если я закрою Eclipse, тогда ddms будет работать без проблем, и я смогу процессы на эмуляторе. Однако, если я теперь открываю Eclipse, я получаю ту же ошибку.
В любом случае, независимо от того, что я делаю, если я пытаюсь удалять отладки, он всегда терпит неудачу с "Не удалось подключиться к удаленной виртуальной машине".
Любые идеи?
Спасибо
Ответы
Ответ 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