Невозможно использовать F5 для входа в функцию во время отладки в Eclipse

Иногда (примерно в 50% случаев) при отладке приложения для Android, чтобы перейти к функции, я использую F5 (F6 для ее просмотра), но это ничего не делает.

Иногда ни одна из обычных клавиш отладки не работает (F5, F6, F7, F8, может быть, другие, о которых я тоже не знаю).

В настоящее время единственный способ преодолеть это — выбрать текущий поток в представлении «Отладка» (которое показывает текущий стек каждого потока), а затем нажать F5 . Когда ситуация еще хуже (например, невозможно использовать помощь по содержимому), я перезапускаю eclipse.

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

Почему такие вещи происходят, и как я могу их исправить?

Примечание. У меня установлены последние версии Eclipse, ADT и Android SDK. проблема возникает как на устройствах, так и на эмуляторах.


person android developer    schedule 06.03.2013    source источник
comment
Когда возникает проблема, посмотрите, можно ли найти привязки клавиш в разделе «Настройки» -> «Общие» -> «Ключи», а затем сообщите мне здесь, если они есть.   -  person g00dy    schedule 29.03.2013
comment
Вы случайно не используете Ubuntu 11.04 с классическим менеджером рабочего стола gnome? У меня много проблем с Eclipse в этой настройке; они варьируются от менее раздражающих причуд, таких как javadoc, не отображается, контекстное меню не отображается, автозаполнение не работает, клавиши отладки (например, F5, F6) не работают и, вишенка наверху, полное зависание графического интерфейса. На самом деле я не использовал Eclipse под Unity (потому что я его ненавижу), поэтому не знаю об этом. Что касается проблемы с нитью... ее никогда не было (насколько я помню)   -  person alex    schedule 29.03.2013
comment
@ g00dy у меня всегда были привязки клавиш.   -  person android developer    schedule 29.03.2013
comment
@alex, я использую Windows 7 в офисе, который показывает эту проблему, но она также возникает (хотя, может быть, и реже) в моем доме с Windows 8.   -  person android developer    schedule 29.03.2013


Ответы (5)


Вы не можете контролировать шаблон выполнения потоков, поскольку они не выполняются последовательно, а отладчик это делает.

Я сталкивался с похожими проблемами с потоками и асинхронными операциями, которые выполняются в фоновом режиме.

Как я справляюсь:

  • Что я делаю, так это запускаю тот же код без потока, и после подтверждения я помещаю его в поток
  • Используйте android.os.Debug.waitForDebugger(); в своей теме. Это автоматически приведет вас туда и заставит отладчик остановиться здесь. После этого вы можете продолжить отладку.

Меры предосторожности

Не забудьте прокомментировать эту строку перед запуском приложения, иначе это приведет к бесконечному ожиданию, так как оно перейдет в режим отладки и на реальном устройстве.

Более того, это не вина Eclipse, это просто из-за характера потоков, поскольку он начинает выполняться в своей собственной среде. Visual Studio ведет себя так же с потоками.

person DeltaCap019    schedule 03.04.2013
comment
Проблема с потоками не является основной проблемой, о которой я говорил. однако я помню, что для обычной Java (Sun/Oracle) при отладке нескольких потоков вы могли оставаться в текущем потоке столько, сколько хотели, без необходимости самостоятельно видеть переключение контекста и выяснять, что произошло и что - это статус потока (сделайте, так сказать, какое-то переключение контекста на себя). - person android developer; 04.04.2013

Вы можете попытаться сбросить свою перспективу (на всякий случай, если вы что-то передвинули, не желая этого).

Это может быть выполнено в перспективе Debug следующим образом:

  1. Щелкните правой кнопкой мыши перспективу отладки (верхняя правая «зона» Eclipse) и выберите «Reset»

  2. Переключение на перспективу отладки и нажатие меню Window->Reset Perspective...

person DigCamara    schedule 03.04.2013
comment
какой из них? отладка, java или оба? - person android developer; 04.04.2013
comment
Просто перспектива отладки. Хотя теперь, когда вы спрашиваете об этом, я думаю, вы могли бы сделать это и для перспективы Java. - person DigCamara; 04.04.2013
comment
хорошо, я сделал это сейчас, и я надеюсь, что это помогло. не могу знать наверняка, пока не использую его достаточно времени. - person android developer; 04.04.2013
comment
Это не сработало. Я предполагаю, что только если я удалю все, что связано с eclipse, JDK и Android, а затем переустановлю все это, все снова будет работать нормально. просто я не хотел тратить на это столько времени. возможно, это будет исправлено само по себе когда-нибудь после обновления любой из этих вещей. - person android developer; 04.04.2013
comment
Да, во всяком случае, именно таким было мое решение (хотя и немного менее радикальным). Тем не менее, не помешало бы попробовать. Удачи! - person DigCamara; 04.04.2013
comment
я оставлю этот вопрос открытым. может быть, кто-то найдет способ исправить это, пока я не переустановлю все. просто это занимает так много времени, и это действительно раздражает, чтобы снова правильно настроить параметры. - person android developer; 04.04.2013

Иногда ни одна из обычных клавиш отладки не работает (F5, F6, F7, F8, может быть, другие, о которых я тоже не знаю).

Ни один из этих ключей не будет работать в представлении, отличном от представления отладки. Это предусмотрено дизайном.

Когда ситуация еще хуже (например, невозможно использовать помощь по содержимому), я перезапускаю eclipse.

У вас глючная установка eclipse или неисправная клавиатура. Я уверен в этом после прочтения других ваших комментариев. У меня были плагины, которые испортили мою установку eclipse, и это может быть связано. Убедитесь, что окно кода затмения имеет фокус, прежде чем пытаться использовать ярлыки. Это тоже может способствовать возникновению проблемы. Если ничего не помогает, попробуйте перейти на другую версию eclipse, чтобы попытаться локализовать проблему.

Какое-то время у меня была эта странная ошибка для eclipse, когда я нажимаю клавишу возврата, она удаляет символы в ранее открытом файле в той же строке. Это было ужасно, и мне пришлось переустановить и перейти на другую версию eclipse (я не могу вспомнить, какой была предыдущая версия). Может у вас ситуация аналогичная.

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

Я знаю боль. К сожалению, нет никакого способа обойти это. Eclipse не учитывает приоритет точки останова при приостановке потоков. Взгляните на этот связанный вопрос - Как лишить приоритета Java testrunner в точках останова Eclipse?. Если вы можете настроить условные точки останова, чтобы предотвратить переход отладчика к другому потоку, это поможет.

person Deepak Bala    schedule 03.04.2013
comment
ярлыки использовались в режиме отладки, так как я всегда использую их там (кстати, вы ошибаетесь, что их невозможно использовать в других режимах). не может быть, что обе клавиатуры неисправны, так как кнопки работают в любом другом приложении (плюс это происходит на 2 совершенно разных компьютерах). я также упомянул, что удалил всю папку eclipse и снова загрузил ее, но это не помогло. Я очень надеюсь, что мне не нужно сбрасывать данные рабочей области, так как мне очень понравились мои настройки. насчет тредов, ведь так было не всегда, да? Я помню, что для официальной Java это позволяло мне оставаться в текущем потоке, нет? - person android developer; 03.04.2013
comment
Я никогда не мог использовать ярлыки отладки в других представлениях. У других был такой же опыт. Можете ли вы указать мне на документы, которые объясняют, как ярлыки работают в других проекциях? Что касается установки eclipse, я переустановил новую, чтобы избавиться от своей проблемы. Насколько мне известно, подвески нитей всегда были такими. - person Deepak Bala; 03.04.2013
comment
Проблема, на которую вы мне указали (используя ссылку), связана с точками останова, которые не работают. Я говорю только о горячих клавишах и ярлыках. иногда они не имеют ничего общего с отладкой. об использовании ярлыков отладки, не находясь в представлении отладки, вы можете проверить сами: просто поставьте точку останова, нажмите кнопку отладки и дождитесь достижения точки останова, перейдите в режим редактирования java и нажмите любую из горячих клавиш отладки (например, F6 ). это не так полезно, но это возможно. - person android developer; 03.04.2013
comment
хм... ты прав. Я пробовал это несколько раз раньше и всегда предполагал, что вам разрешено отлаживать только с точки зрения «отладки». Наверное, я просто жил с ним долгое время. Спасибо. Я отредактирую свой ответ, чтобы исправить это. - person Deepak Bala; 04.04.2013
comment
Перезапуск Eclipse устраняет проблему с клавиатурой... это первый раз, когда я столкнулся с этой проблемой после многих лет использования перспективы отладки Eclipse. Мне не пришлось сбрасывать перспективу. - person Christophe Roussy; 04.04.2016

Я нашел хороший поток, в котором объясняется, как в Eclipse выполняется отладка с пошаговыми фильтрами. Тему можно найти здесь. Поскольку, по-видимому, это проблема в eclipse, и с ней сталкивается все больше людей, на данный момент это обходной путь:

Вы можете настроить Java-отладчик Eclipse так, чтобы он не входил в эти фрагменты кода, настроив «Шаговый фильтр».

  1. Перейдите в Windows -> Настройки -> Java -> Отладка -> Пошаговая фильтрация.
  2. Установите флажок «Использовать пошаговые фильтры».
  3. Проверьте соответствующие параметры на экране. Вы можете добавлять части, которые относятся к вашей собственной кодовой базе.
  4. Нажмите «Применить».

Посмотрите, поможет ли это вам.

person g00dy    schedule 29.03.2013
comment
Это не было проверено. Какой из них я должен проверить? разве это не противоположно тому, что я спрашиваю? даже F8 не работает, так зачем мне ее использовать? даже основные клавиши могут перестать работать (например, удалить). это похоже на огромную ошибку в eclipse, и я понятия не имею, почему это происходит. сегодня я даже удалил всю папку eclipse и повторно загрузил ее с нужными мне плагинами (например, adt), и снова возникла та же ошибка. - person android developer; 02.04.2013
comment
Звучит очень странно для меня .. вы уверены, что ваша клавиатура работает хорошо - у вас есть запасная, чтобы проверить? - person g00dy; 02.04.2013
comment
Это происходит как на моем компьютере дома, так и в офисе. Я понятия не имею, когда и почему это происходит, но это действительно раздражает. Обычно это происходит при отладке, но может произойти и без видимой причины, и тогда я перезапускаю eclipse. - person android developer; 02.04.2013

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

person Pomagranite    schedule 20.03.2016