Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
GukZiLLA
35 / 35 / 2
Регистрация: 30.11.2013
Сообщений: 102
#1

Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения? - Программирование Android

09.06.2015, 23:19. Просмотров 513. Ответов 17
Метки нет (Все метки)

Например вот:

Java
1
2
3
4
5
6
7
8
9
10
11
12
java.lang.NullPointerException
at android.view.textservice.SpellCheckerSession.handleOnGetSentenceSuggestionsMultiple(SpellCheckerSession.java:222)
at android.view.textservice.SpellCheckerSession.access$100(SpellCheckerSession.java:86)
at android.view.textservice.SpellCheckerSession$1.handleMessage(SpellCheckerSession.java:116)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:149)
at android.app.ActivityThread.main(ActivityThread.java:5061)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:603)
at dalvik.system.NativeStart.main(Native Method)
При этом стек даже не содержит имени пакета приложения.
На определенном устройстве возникает такая ошибка и приложение закрывается.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2015, 23:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения? (Программирование Android):

Как обрабатывать ошибки? - Visual Basic
Объясните пожалуйста как обработать ошибку, т.е. например при ошибке 1117 что бы выходить из какой-нибудь процедуры без завершения работы...

Трассировка стека рекурснивного метода - Java
Есть трассировка рекурсивного метода, вот например факториала: Enter n: 3 factorial(3): ...

Что такое трассировка стека? - Java SE
из Шилдта

Как лучше обрабатывать ошибки? - C (СИ)
Как лучше обрабатывать ошибки в Си? У меня науме только такой вариант. Допустим есть функция, которая выполняет сложение матриц. ...

Как обрабатывать ошибки на VBScript? - C# ASP.NET
Подскажите как отловить ошибки на VBScript

Как программно обрабатывать ошибки переданные от SQL Server 2000? - SQL Server
Добрый день! Без разного рода вступлений начну с самого главного - с вопроса: Как программно (Delphi 7 с использованием ADO)...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 655
10.06.2015, 00:35 #2
Ищи при помощи логов, например. В разных местах логируешь и смотришь где ещё работает, а где уже нет. Ты же сам должен представлять что у тебя происходит в коде и где могут быть косяки. Наверное это не лучший способ, но я так привык делать.
0
GukZiLLA
35 / 35 / 2
Регистрация: 30.11.2013
Сообщений: 102
10.06.2015, 04:23  [ТС] #3
Цитата Сообщение от Mikalai Посмотреть сообщение
Ищи при помощи логов, например. В разных местах логируешь и смотришь где ещё работает, а где уже нет. Ты же сам должен представлять что у тебя происходит в коде и где могут быть косяки. Наверное это не лучший способ, но я так привык делать.
Было бы замечательно, если бы я писал код и вдруг такая ошибка начала бы возникать. Стабильно. Но как понять где копать, если стек приходит от какого-нибудь португальца, раз в месяц, скачавшего приложение с гугл плея.

Добавлено через 4 минуты
Когда пользователей становится уже несколько тысяч, то раз в день-два стабильно такие разнообразные ошибки приходят, у которых никак не понять откуда ноги растут.
0
Fulcrum_013
718 / 743 / 73
Регистрация: 14.12.2014
Сообщений: 5,842
Завершенные тесты: 3
10.06.2015, 04:51 #4
Цитата Сообщение от GukZiLLA Посмотреть сообщение
у которых никак не понять откуда ноги растут.
В их часовом поясе смещение фазы луны превышает критическое.
Цитата Сообщение от GukZiLLA Посмотреть сообщение
Когда пользователей становится уже несколько тысяч, то раз в день-два стабильно такие разнообразные ошибки приходят
Если она у пользователя возникла, то и будет возникать постоянно. Если он прогой пользуется постоянно то и ошибки будут приходить постоянно от того же пользователя.

Добавлено через 2 минуты
Цитата Сообщение от GukZiLLA Посмотреть сообщение
java.lang.NullPointerException
Как вариант пустили на старом девайсе с версией андроида ниже требуемой и не нашелся нужный метод.
0
GukZiLLA
35 / 35 / 2
Регистрация: 30.11.2013
Сообщений: 102
10.06.2015, 05:06  [ТС] #5
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Если она у пользователя возникла, то и будет возникать постоянно. Если он прогой пользуется постоянно то и ошибки будут приходить постоянно от того же пользователя.
Ух-ты, я прям прозрел!

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Как вариант пустили на старом девайсе с версией андроида ниже требуемой и не нашелся нужный метод.
Ак вот не вариант, так как выше требуемой.
0
Fulcrum_013
718 / 743 / 73
Регистрация: 14.12.2014
Сообщений: 5,842
Завершенные тесты: 3
10.06.2015, 05:15 #6
Цитата Сообщение от GukZiLLA Посмотреть сообщение
Ак вот не вариант, так как выше требуемой.
Ну тогда проверяйте инициализацию всех переменных. И все динамические переменные перед обращением. И все результаты операций выделения памяти. Их кстати очень неплохо в try catch блок. а то они взяли моду не NULL возвращать если что не так а экскепшинами бросаться.

Добавлено через 2 минуты
Хотя конечно существует вариант что это проблема не вашего приложения а реализации андроида на какой то конкретной китайской модели трубы.

Добавлено через 1 минуту
Цитата Сообщение от GukZiLLA Посмотреть сообщение
При этом стек даже не содержит имени пакета приложения
т.е. как понимаю ваше приложение даже не получает управление, валится загрузчик ОС при запуске? Как вариант требования к ОЗУ или чему то еще выше чем есть в системе, ну и при попытке их распределения загрузчик вылетает, либо конфликт с правами доступа и т.д. Опять же не факт что в данной трубе корректно реализована поддержка всего функционала всех предыдущих версий.
0
GukZiLLA
35 / 35 / 2
Регистрация: 30.11.2013
Сообщений: 102
10.06.2015, 05:40  [ТС] #7
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Хотя конечно существует вариант что это проблема не вашего приложения а реализации андроида на какой то конкретной китайской модели трубы.
В основном от китайцев и идут ошибки. От реальных китайцев с локалей zh_CN и изредка с других стран.

Вот например еще одна от pt_BR:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
java.lang.NullPointerException
at com.google.maps.api.android.lib6.d.ao.onClick(Unknown Source)
at android.view.View.performClick(View.java:4432)
at android.view.View$PerformClick.run(View.java:18339)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5283)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method)
Я канеш понимаю, что что-то с картами связано, но опять-таки пакета приложения нет в стеке.

Добавлено через 6 минут
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
т.е. как понимаю ваше приложение даже не получает управление, валится загрузчик ОС при запуске? Как вариант требования к ОЗУ или чему то еще выше чем есть в системе, ну и при попытке их распределения загрузчик вылетает, либо конфликт с правами доступа и т.д. Опять же не факт что в данной трубе корректно реализована поддержка всего функционала всех предыдущих версий.
Валится не при запуске приложения, а во время работы.
Если бы проблемы были с ОЗУ, то скорей всего получал бы outOfMemory?

Тут еще один момент, что мне надо как-то начальству объяснить, что это косяки прошивок))

---

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

---

Иногда удается понять что провоцирует ошибку в прошивке(?) и не провоцировать, но чаще всего не ясно что делать)

Добавлено через 10 минут
Fulcrum_013, наверняка станет интересно узнать как я такое перехватываю)

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class UnCaughtException implements UncaughtExceptionHandler {
    
    private Context ctx;
 
    public UnCaughtException(Context ctx) {
        this.ctx = ctx;
    }
 
    
    @Override
    public void uncaughtException(Thread t, Throwable e) {
        try {
            StringBuilder report = new StringBuilder();
            Date curDate = new Date();
            report.append("Error Report collected on : ").append(curDate.toString()).append('\n').append('\n');
            report.append("Informations :").append('\n');
            report.append('\n').append('\n');
            report.append("Stack:\n");
            final Writer result = new StringWriter();
            final PrintWriter printWriter = new PrintWriter(result);
            e.printStackTrace(printWriter);
            report.append(result.toString());
            printWriter.close();
            report.append('\n');
            report.append("**** End of current Report ***");
            Log.e(UnCaughtException.class.getName(), "Error while sendErrorMail" + report);
            sendError(ctx, report);
        } catch ( Throwable ignore ) {
            Log.e(UnCaughtException.class.getName(), "Error while sending error e-mail", ignore);
        }
    }
 
    ...
}
в методе sendError(ctx, report) происходит отправка ошибки на наш сервер.
В итоге всё перехваченное валится пачками и можно оперативно отслеживать работоспособность приложения.
0
Fulcrum_013
718 / 743 / 73
Регистрация: 14.12.2014
Сообщений: 5,842
Завершенные тесты: 3
10.06.2015, 05:43 #8
Цитата Сообщение от GukZiLLA Посмотреть сообщение
Валится не при запуске приложения, а во время работы.
Тогда существует вариант что то что его валит по дороге еще и стек портит
0
GukZiLLA
35 / 35 / 2
Регистрация: 30.11.2013
Сообщений: 102
10.06.2015, 05:44  [ТС] #9
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Тогда существует вариант что то что его валит по дороге еще и стек портит
Вот как понять что его валит и как это исправить?
0
Fulcrum_013
718 / 743 / 73
Регистрация: 14.12.2014
Сообщений: 5,842
Завершенные тесты: 3
10.06.2015, 05:45 #10
Цитата Сообщение от GukZiLLA Посмотреть сообщение
Тут еще один момент, что мне надо как-то начальству объяснить, что это косяки прошивок))
Почему то думал что у тех кто на гугл-плэй размещает приложения начальство отсутствует как класс
0
GukZiLLA
35 / 35 / 2
Регистрация: 30.11.2013
Сообщений: 102
10.06.2015, 05:49  [ТС] #11
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Почему то думал что у тех кто на гугл-плэй размещает приложения начальство отсутствует как класс
Есть свои игрульки и приложения, но они не выстрелили.
Слишком плохонькие видать)
Так что пока приходится мириться с начальством.
0
Fulcrum_013
718 / 743 / 73
Регистрация: 14.12.2014
Сообщений: 5,842
Завершенные тесты: 3
10.06.2015, 05:49 #12
Цитата Сообщение от GukZiLLA Посмотреть сообщение
Вот как понять что его валит и как это исправить?
Если есть вопросы с NULL и порчей стэка то значит какой то указатель смотрит не туда. Учитывая что это JAVA то не туда его явно не вы указали а кто то другой вне вашего контроля (например кривая Java-машина). Или внешнее вмешательство. Был как то баг - при запуске одного приложения внешним лаунчером у него крешились java-машина которую он поднималю причем баг проявлялся именно на USA версии Windows-98. на других версиях той же 98-ой все работало отлично. Причиной бага было то что функции WinAPI именно в этой версии винды возвращали кривой указатель, пользуя который лаунчер рылся в куче запускаемого процесса.
0
GukZiLLA
35 / 35 / 2
Регистрация: 30.11.2013
Сообщений: 102
10.06.2015, 05:54  [ТС] #13
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Если есть вопросы с NULL и порчей стэка то значит какой то указатель смотрит не туда. Учитывая что это JAVA то не туда его явно не вы указали а кто то другой вне вашего контроля (например кривая Java-машина). Или внешнее вмешательство. Был как то баг - при запуске одного приложения внешним лаунчером у него крешились java-машина которую он поднималю причем баг проявлялся именно на USA версии Windows-98. на других версиях той же 98-ой все работало отлично.
От этого слегка полегче на душе
0
Fulcrum_013
718 / 743 / 73
Регистрация: 14.12.2014
Сообщений: 5,842
Завершенные тесты: 3
10.06.2015, 06:20 #14
Цитата Сообщение от GukZiLLA Посмотреть сообщение
От этого слегка полегче на душе
Причиной бага было то что функции WinAPI именно в этой версии винды возвращали кривой указатель, пользуя который лаунчер рылся в куче запускаемого процесса (отключал защиту армадилло).

Добавлено через 22 минуты
Цитата Сообщение от GukZiLLA Посмотреть сообщение
Так что пока приходится мириться с начальством.
Начальство бывает разное. Когда сам работал по найму начальство частенько занимало в результате позицию как мириться со мной. Но поскольку размер З/П был не в их компетенции (начальство отдела на заводе), то удержать меня им не удалось
0
GukZiLLA
35 / 35 / 2
Регистрация: 30.11.2013
Сообщений: 102
10.06.2015, 06:40  [ТС] #15
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Начальство бывает разное. Когда сам работал по найму начальство частенько занимало в результате позицию как мириться со мной. Но поскольку размер З/П был не в их компетенции (начальство отдела на заводе), то удержать меня им не удалось
А сейчас как? ИП?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2015, 06:40
Привет! Вот еще темы с ответами:

Как обрабатывать системные исключения в С++ Builder так, чтобы в ответ на стандартные ошибки - C++ Builder БД
появлялось не стандартное окно, а моё окно, которое я создал в приложении сам?

Создание консольной версии приложения (своя консоль) - как обрабатывать в ней команды - C#
Всем привет. Буквально вчера закончил очередной проект, а до дедлайна еще 5 дней. И я решил чтобы зря время не терять (делать мне больше...

Что происходит, когда объект не успевает обрабатывать вызовы методов? - Java SE
Здравствуйте! Есть объект А и объекты В1, В2, В3. Когда объекты В обращаются к А, вызывая какие-нибудь методы А и объект А не успевает...

Какое событие надо обрабатывать, когда AxWindowsMediaPlayer становится на весь экран - C#
Добавил в проект компонент AxWMPLib.AxWindowsMediaPlayer теперь не могу понять какое событие надо обрабатывать, когда проигрыватель...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.06.2015, 06:40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru