Как отлаживать написанное приложение средствами Android SDK?

Рейтинг: 1Ответов: 1Опубликовано: 06.07.2011

Здравствуйте. Пишу простенькие примеры в Eclipse под Android. Самое распространенное событие по их запуску на эмуляторе устройства - неожиданное их завершение системой Android с выводом стандартного сообщения. На тематических форумах (а так же добрые люди на ХэшКоде) советуют изучать логи инструмента LogCat, DDMS и т.д. Но, проблема в том, что я никак не осознаю что и как там следует отслеживать. В литературе об этом ничего не сказано, кроме того, что такие инструменты есть и они удобные. Однако, как люди выходят на строки в коде, вызывающие исключение, какие-то логические ошибки (вроде тех, что вызывают переполнение массива и т.д.)? Умоляю тех, кто работает под Eclipse с Android SDK, напишите хоть какие-то инструкции или дайте ссылки на непосредственно тему отлавливания ошибок и исключений в приложении, т.е. на дебаг приложения построчно.

Ответы

▲ 6

Когда вы открываете DDMS он умеет писать обо всем, что происходит на телефоне/эмуляторе. Когда происходит критическая ошибка, которую автор приложения не удосужился отловить, Android сам нарисует вам трассировку ошибки от и до.

Если же вы хотите сами все отслеживать, тогда воспользуйтесь классом Log, который имеет ряд функций, для вывода различных сообщений (например, i - info, w - warning, e - error). В DDMS они различаются цветом, для самого Андроида, вероятно еще чем-то, в эти подробности не лез.

Не забывайте использовать try...catch и отлавливать исключительные ситуации, затем их так же можно вывести в лог, используя Log класс.

И более того, DDMS умеет отслеживать потоки, кучу, имеет собственный файл-эксплорер. Все это на вкладках. И еще множество других фич, которые стоит просто попробовать.

UPD

Простейший код:

try {
        int p = Integer.parseInt("7.5");
    } catch (Exception e) {
        for(StackTraceElement stackTraceElement : e.getStackTrace())
            Log.e("StackTrace", stackTraceElement.toString());
    }

Получаем следующее в DDMS:

ddms