#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 может.