Трассировка стека Android — где отображается ошибка?

#android #debugging

#Android #отладка

Вопрос:

Почему я не вижу метод, который генерирует исключение во время выполнения в Android? Или это есть, и я не понимаю, как прочитать трассировку стека? Во Flash легко увидеть, где возникает ошибка. В Android это непросто. Может быть, потому, что он запускает другой поток. Понятия не имею. Прилагаются sceens. Можете ли вы увидеть, где возникает ошибка в трассировке стека?

введите описание изображения здесь

введите описание изображения здесь

Ответ №1:

Проблема в том, что вы еще недостаточно «развернули» трассировку стека. Когда генерируется исключение, вы должны продолжать переходить, пока не увидите исключение, появляющееся в LogCat (которое вы должны видеть в представлении отладки по умолчанию).

Например, вот мой код:

 public class HelloAndroid extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        throw new RuntimeException("Exception");
        //setContentView(R.layout.main);
    }
}
  

Когда исключение, наконец, будет выброшено по всему стеку, я, наконец, увижу это в своем окне LogCat:

введите описание изображения здесь

Если вы посмотрите сюда, вы увидите вверху трассировки стека выброшенное исключение. Однако это не говорит вам о многом (кроме того, что произошло). В нижней части окна LogCat вы можете увидеть, какова была фактическая причина (которую вы увидите, как только развернется все исключение). В данном конкретном случае это произошло в моем методе HelloAndroid.onCreate() (который я выбрал). Когда вы дважды щелкните по этой строке, вы попадете в свой код и где на самом деле произошло исключение.

Комментарии:

1. Это хороший ответ, но не тот вопрос, который я задал. Я спросил о трассировке стека отладчика, а не о регистрации cat. Вы не можете сделать шаг назад и через LogCat.

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

Ответ №2:

Я никогда не использовал режим отладки, но я использую представление LogCat. Вы активируете его в

Окно -> Показать вид -> Другое -> Android -> LogCat.

Если возникает исключение, журнал отображает его красным цветом. По моему опыту, реальная проблема никогда не появляется в начале исключения, она появляется после строки

«Вызвано»

Там вы увидите, в какой строке вашего кода было сгенерировано исключение, и сможете перейти туда, просто дважды щелкнув по нему.

Ответ №3:

Режим трассировки стека отладки не показывает его. Logcat может.