У меня проблема с Android Studio debugger: каждый breakpoint, который я установил внутри static method , полностью игнорируется . С другой стороны, те, которые установлены в non-static methods, работают отлично.

Фактически, даже если я прервусь непосредственно перед вызовом static method, а затем вручную "перейти" , это не сработает. Когда я вхожу внутрь, я перехожу через весь код в моем статическом методе к первому фрагменту кода внутри нестатического.

Как я могу это решить? Это чрезвычайно затрудняет поиск ошибок, поскольку в моем проекте есть несколько helper classees с static methods.

Дополнительная информация

Версия студии Android: 1.2.1.1
Тестирование на Galaxy s5 - Android Lollipop
Уже пытались сделать недействительным кеш / перезапустить / очистить и перестроить проект
Нет перегруженных методов
Не трогал правила proguard
Минификация не включена
Код фактически выполняется (проверено с помощью сообщений logcat)

Пример кода:

    private void LoadAvailableExperiments(){ //non static methods, breakpoints work fine here
        try {
            List<ExperimentStoreEntry> storedExperiments = PackageHelpers.GetStoredExperiments(true); //call to static method
        } catch (IOException e) {
            e.printStackTrace();
        }
//rest of the method
}

Затем внутри класса PackageHelpers:

public static List<ExperimentStoreEntry> GetStoredExperiments(boolean cleanInvalidEntries){ //static method. Breakpoints don't work here
        List<ExperimentStoreEntry> entries = new LinkedList<>(); //breakpoint here is never hit
        File dir = new File(IOHelpers.getExperimentsStoragePath()); //nor here
        if(dir.exists()) { //nor here... etc...
            for (File subdir : dir.listFiles()) {
                //rest of the code I won't bore you with...
        }
        return entries;
    }

РЕДАКТИРОВАТЬ: пожалуйста, если вы -1 вопрос, по крайней мере, скажите, почему в комментариях, чтобы я мог его улучшить. Честно говоря, не знаю, что еще добавить: /

4
Master_T 27 Май 2015 в 11:36
0. методы с одинаковыми именами, но разными параметрами? 1. android studio версия, 2. прогвард "трогал" ваш код? 3. и т.д ... magic orb не является одним из инструментов программиста ... с такой небольшой информацией единственный ответ: Он работает для меня.
 – 
Selvin
27 Май 2015 в 11:39
@Selvin: отредактировано с дополнительной информацией и образцом кода
 – 
Master_T
27 Май 2015 в 11:49
Если вы добавите точку останова в Android Studio, когда устройство подключено к отладчику, точка останова превратится в галочку или крестик?
 – 
FunkTheMonk
27 Май 2015 в 12:39
: независимо от того, подключены они или нет, точки останова, установленные внутри статических методов, не имеют никакого символа, только красную точку. Точки останова, установленные в нестатических методах, отмечены галочкой.
 – 
Master_T
27 Май 2015 в 12:44
1
Можете ли вы протестировать на другом устройстве? может быть связано с: stackoverflow.com/questions/27940583/…
 – 
FunkTheMonk
27 Май 2015 в 13:09

1 ответ

Лучший ответ

Как указал FunkTheMonk, это была проблема с первым выпуском Lollipop на GalaxyS5. Обновление устройства до последней версии прошивки решило проблему.

Подробнее см. Здесь: Galaxy S5 Lollipop - не все точки останова прекращают выполнение в отладчике Android Studio

1
Community 23 Май 2017 в 15:17
1
У меня такая же проблема, но на Oreo 8.2. Это неправильный ответ
 – 
Herrgott
1 Фев 2019 в 02:42
У меня такая же проблема в Oreo 8.1. Кроме того, если я добавлю точку останова перед вызовом статического метода и попытаюсь перейти в статический метод, отладчик просто продолжит выполнение кода в этой точке, не выполняя никаких действий. Кроме того, сообщения журнала, которые я установил внутри статического метода, не выводятся на консоль. Я не думаю, что статический метод вообще выполняется! Очень странно.
 – 
authentictech
1 Июл 2019 в 16:40
Я смог решить свою проблему, только перезапустив устройство, на котором был запущен код. Статический метод теперь работает / отлаживается правильно.
 – 
authentictech
1 Июл 2019 в 22:10