У меня проблемы с использованием автономного отладчика Java с приложениями для Android на эмуляторе. По-видимому, можно использовать любой отлаживаемый Java-отладчик, такой как jdb (или jswat), с помощью следующих действий (как я понял после прочтения здесь и там):
1) включить эмулятор, установить приложение на эмуляторе (adb install)
2) включить сервер dalvik (ddms)
3) в эмуляторе запустите приложение «DevTools» -> «Настройки разработки» -> выберите приложение, которое хотите отладить, включите флаг «Ожидание отладчика»
4) снова в эмуляторе, запустите ваше приложение; он заблокируется, ожидая подключения отладчика, и dalvik покажет новый процесс, помеченный «красной ошибкой»
5) на dalvik выберите процесс, отмеченный красным; его порт отладки, таким образом, перенаправляется на локальный хост: 8700
6) подключить отладчик к localhost: 8700. С jdb вы должны запустить "jdb -attach 8700"
Как только отладчик запущен, ваше приложение на эмуляторе разблокируется. Похоже, что приложение правильно обнаружило отладчик и, следовательно, работает свободно.
Суть, однако, в том, что он «запускается свободно», то есть он не будет ждать, пока отладчик выдаст команду «run». Поэтому у меня нет шансов установить какие-либо контрольные точки.
Следуя подсказкам из 1 , я попытался поместить циклы ожидания в начале своего приложения, в надежде, что у меня будет время установить точку останова. Когда я пытаюсь установить точку останова, jdb говорит: «Отсрочка точки останова XXX.YYY. Она будет установлена после загрузки класса.», Поскольку приложение еще не запущено. Но если я затем введу команду «выполнить», ответ будет «Ничего не приостановлено», так как приложение уже запущено (и оно действительно есть).
С jswat вы не видите все эти сообщения, но конечный результат тот же: - (
Само собой разумеется, "jdb -attach" прекрасно работает с не-андроидными java-приложениями, работающими на localhost.
Любые подсказки (кроме "пожалуйста, используйте затмение")?
Я просто где-то упускаю глупую деталь?
Приложение - HelloWorld, команда сборки - "ant debug".
Заранее спасибо.