Логи падения приложения

Ответить
alu
Сообщения: 53
Зарегистрирован: 06 сен 2013, 13:02

Логи падения приложения

Сообщение alu » 06 сен 2013, 13:14

Есть ли возможность как-то получить логи падения приложения? Т.е. те логи которые видны в IDE во время работы приложения с "Error" уровнем. Как я понимаю эти логи включая номера строк пишутся всегда (видимо отладочная информация не убирается после сборки приложения).
Допустим человек что-то сделал и в приложении возникла исключительная ситуация, которая его закрыла. Мне нужны последние логи работы приложения с "Error" уровнем, хотябы сохраненные в файле, чтоб его можно было отослать по почте. В лучшем случае автоматически слались либо на сайт, либо на почту.

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Логи падения приложения

Сообщение KamiSempai » 06 сен 2013, 14:08

Можно использовать специальные библиотеки.
Если по мимо логов хочется узнать по больше информации о состоянии телефона во время падения, подойдет ACRA: https://github.com/ACRA/acra
Я пользуюсь Flury. Там не все так подробно, но логи посмотреть можно: http://www.flurry.com/
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

alu
Сообщения: 53
Зарегистрирован: 06 сен 2013, 13:02

Re: Логи падения приложения

Сообщение alu » 06 сен 2013, 16:56

KamiSempai писал(а):Можно использовать специальные библиотеки.
Если по мимо логов хочется узнать по больше информации о состоянии телефона во время падения, подойдет ACRA: https://github.com/ACRA/acra
Я пользуюсь Flury. Там не все так подробно, но логи посмотреть можно: http://www.flurry.com/
A crash reporting feature for android apps is native since Android 2.2 (FroYo) but only available through the official Android Market (and with limited data).

Всмысле в самом маркете в интерфейсе разработчика есть эти логи о падении приложения с причинами и номерами строк? Просто я там не регистнировался еще и не знаю о возможностях.

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Логи падения приложения

Сообщение KamiSempai » 06 сен 2013, 17:10

Да, в интерфейсе разработчика можно посмотреть логи ошибок, но появляются они там после того как пользователь нажмет кнопку отправки отчета об ошибке после вылета приложения. Делают это единицы.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

alu
Сообщения: 53
Зарегистрирован: 06 сен 2013, 13:02

Re: Логи падения приложения

Сообщение alu » 06 сен 2013, 17:48

KamiSempai писал(а):Да, в интерфейсе разработчика можно посмотреть логи ошибок, но появляются они там после того как пользователь нажмет кнопку отправки отчета об ошибке после вылета приложения. Делают это единицы.
Зарегаюсь попозже. Кстати там для оплаты 25 баксов доллоровая карточка нужна или рублевая там сама конвертируется?

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Логи падения приложения

Сообщение KamiSempai » 07 сен 2013, 00:15

Подойдет любая карточка. Валюта конвертируется автоматически.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

alu
Сообщения: 53
Зарегистрирован: 06 сен 2013, 13:02

Re: Логи падения приложения

Сообщение alu » 19 окт 2013, 22:03

Ну в общем небольшой опыт появился. Flurry если честно маловато информации дает. Логи падения не полные, а всего несколько последних строчек, из которых, например, я не смог вычислить источник, до тех пор пока какой-то пользователь не нажал кнопку отправить после падения приложения (с комментарием в стиле "все гАвно") Статистику дает непонятно и удобство их сайта оставляет желать лучшего. Насчет статистики я все же наверно позже попробую Google Analytics для Андроида
Flurry в паре случаев помогал конечно, но есть полный смысл что-то другое пробовать.

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Логи падения приложения

Сообщение KamiSempai » 20 окт 2013, 01:26

С последней версией SDK отчеты об ошибка вполне информативные. Есть отдельная вкладка "Errors", там подробно.
Из всего остального для меня важно видеть приблизительное количество активных пользователей, так как гугл такой статистики не дает, а также статистика по количеству ошибок. Flurry с этим отлично справляется.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

DeadKenny
Сообщения: 8
Зарегистрирован: 16 ноя 2013, 19:29

Re: Логи падения приложения

Сообщение DeadKenny » 16 ноя 2013, 19:42

Можно использовать Acra. Если есть какой-нибудь сайт свой, или место где можно разместить скрипт, то можно настроить Acra примерно так:

Код: Выделить всё

@ReportsCrashes(formKey = "",
formUri = Constants.ERROR_REPORT_URL, formUriBasicAuthLogin = Constants.ERROR_LOGIN, formUriBasicAuthPassword = Constants.ERROR_PASSWORD, mode = ReportingInteractionMode.TOAST, resToastText = R.string.crash_toast_text)
Где ERROR_REPORT_URL - скрипт PHP, ERROR_LOGIN - логин в скрипте, ERROR_PASSWORD пароль в скрипте.

Ну а тело самого скрипта такое:

Код: Выделить всё

<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="My Realm"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Текст, отправляемый в том случае,
    если пользователь нажал кнопку Cancel';
    exit;
} else {
// анализируем переменную PHP_AUTH_DIGEST
	if ($_SERVER['PHP_AUTH_USER'] != '_логин_' || $_SERVER['PHP_AUTH_PW'] != '_пароль_')
		exit;
	
	$android_version = $_POST['ANDROID_VERSION'];
	$build = $_POST['BUILD'];	
	$brand = $_POST['BRAND'];	
	$stack_trace = $_POST['STACK_TRACE'];
	$avail_mem_size = $_POST['AVAILABLE_MEM_SIZE'];
	$app_version_code = $_POST['APP_VERSION_CODE'];
	$mymail="app_name@mail-server.ru"; 
	$headers = "From: ".$mymail;
	if( $stack_trace != "" && $app_version_code > 16)
	{
		mail ($mymail, "Отчет об ошибке V".$app_version_code, "$android_version\r\n$build\r\n$brand\r\n$avail_mem_size\r\n$app_version_code\r\n$stack_trace",$headers);
		echo "OK";
	}
}
	
?>
Этот скрипт пошлет отчет об ошибке на указанный мэйл, а в заголовке укажет Отчет об ошибке Vверсия_приложения.

alu
Сообщения: 53
Зарегистрирован: 06 сен 2013, 13:02

Re: Логи падения приложения

Сообщение alu » 16 ноя 2013, 23:18

DeadKenny писал(а):Можно использовать Acra. Если есть какой-нибудь сайт свой, или место где можно разместить скрипт, то можно настроить Acra примерно так:

Код: Выделить всё

@ReportsCrashes(formKey = "",
formUri = Constants.ERROR_REPORT_URL, formUriBasicAuthLogin = Constants.ERROR_LOGIN, formUriBasicAuthPassword = Constants.ERROR_PASSWORD, mode = ReportingInteractionMode.TOAST, resToastText = R.string.crash_toast_text)
Где ERROR_REPORT_URL - скрипт PHP, ERROR_LOGIN - логин в скрипте, ERROR_PASSWORD пароль в скрипте.

Ну а тело самого скрипта такое:

Код: Выделить всё

<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="My Realm"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Текст, отправляемый в том случае,
    если пользователь нажал кнопку Cancel';
    exit;
} else {
// анализируем переменную PHP_AUTH_DIGEST
	if ($_SERVER['PHP_AUTH_USER'] != '_логин_' || $_SERVER['PHP_AUTH_PW'] != '_пароль_')
		exit;
	
	$android_version = $_POST['ANDROID_VERSION'];
	$build = $_POST['BUILD'];	
	$brand = $_POST['BRAND'];	
	$stack_trace = $_POST['STACK_TRACE'];
	$avail_mem_size = $_POST['AVAILABLE_MEM_SIZE'];
	$app_version_code = $_POST['APP_VERSION_CODE'];
	$mymail="app_name@mail-server.ru"; 
	$headers = "From: ".$mymail;
	if( $stack_trace != "" && $app_version_code > 16)
	{
		mail ($mymail, "Отчет об ошибке V".$app_version_code, "$android_version\r\n$build\r\n$brand\r\n$avail_mem_size\r\n$app_version_code\r\n$stack_trace",$headers);
		echo "OK";
	}
}
	
?>

Этот скрипт пошлет отчет об ошибке на указанный мэйл, а в заголовке укажет Отчет об ошибке Vверсия_приложения.
А какой размер этого пакета? То флюри сразу приложение в два раза размер увеличил - на 500К. Для небольшой утилитки это не очень хорошо

DeadKenny
Сообщения: 8
Зарегистрирован: 16 ноя 2013, 19:29

Re: Логи падения приложения

Сообщение DeadKenny » 16 ноя 2013, 23:23

alu писал(а): А какой размер этого пакета? То флюри сразу приложение в два раза размер увеличил - на 500К. Для небольшой утилитки это не очень хорошо
99 килобайт jar файл весит.
https://github.com/ACRA/acra

Nik
Сообщения: 63
Зарегистрирован: 08 ноя 2013, 21:17
Откуда: Pyatigorsk
Контактная информация:

Re: Логи падения приложения

Сообщение Nik » 25 ноя 2013, 15:57

Помогите найти причину падения приложения.
11-25 12:52:19.678: E/AndroidRuntime(1130): FATAL EXCEPTION: main
11-25 12:52:19.678: E/AndroidRuntime(1130): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.therapy/com.example.therapy.Otravl}: java.lang.NullPointerException
11-25 12:52:19.678: E/AndroidRuntime(1130): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
11-25 12:52:19.678: E/AndroidRuntime(1130): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
11-25 12:52:19.678: E/AndroidRuntime(1130): at android.app.ActivityThread.access$600(ActivityThread.java:141)
11-25 12:52:19.678: E/AndroidRuntime(1130): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Логи падения приложения

Сообщение trew » 25 ноя 2013, 16:31

Nik писал(а):Помогите найти причину падения приложения.
11-25 12:52:19.678: E/AndroidRuntime(1130): FATAL EXCEPTION: main
11-25 12:52:19.678: E/AndroidRuntime(1130): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.therapy/com.example.therapy.Otravl}: java.lang.NullPointerException
11-25 12:52:19.678: E/AndroidRuntime(1130): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
11-25 12:52:19.678: E/AndroidRuntime(1130): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
11-25 12:52:19.678: E/AndroidRuntime(1130): at android.app.ActivityThread.access$600(ActivityThread.java:141)
11-25 12:52:19.678: E/AndroidRuntime(1130): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
У тебя что-то возвращает NULL. Может переменную объявил, а значение ей не присвоил.
Можешь погуглить ошибку: java.lang.NullPointerException
(двойной щелчок по этой строке в логе - должен перекинуть в код, на строку с ошибкой)
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Nik
Сообщения: 63
Зарегистрирован: 08 ноя 2013, 21:17
Откуда: Pyatigorsk
Контактная информация:

Re: Логи падения приложения

Сообщение Nik » 25 ноя 2013, 18:49

trew писал(а):
Nik писал(а):Помогите найти причину падения приложения.
11-25 12:52:19.678: E/AndroidRuntime(1130): FATAL EXCEPTION: main
11-25 12:52:19.678: E/AndroidRuntime(1130): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.therapy/com.example.therapy.Otravl}: java.lang.NullPointerException
11-25 12:52:19.678: E/AndroidRuntime(1130): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
11-25 12:52:19.678: E/AndroidRuntime(1130): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
11-25 12:52:19.678: E/AndroidRuntime(1130): at android.app.ActivityThread.access$600(ActivityThread.java:141)
11-25 12:52:19.678: E/AndroidRuntime(1130): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
У тебя что-то возвращает NULL. Может переменную объявил, а значение ей не присвоил.
Можешь погуглить ошибку: java.lang.NullPointerException
(двойной щелчок по этой строке в логе - должен перекинуть в код, на строку с ошибкой)
нашел ошибку. (кривые руки + глюки// 2 одинаковых кнопки работали в одной форме)

Nik
Сообщения: 63
Зарегистрирован: 08 ноя 2013, 21:17
Откуда: Pyatigorsk
Контактная информация:

Re: Логи падения приложения

Сообщение Nik » 30 ноя 2013, 09:56

Лог падения приложения указывает на getResult
11-30 06:51:22.671: E/AndroidRuntime(1005): at cd.discriminant.MainActivity.getResult(MainActivity.java:81)
не могу понять в чем баг.

Код: Выделить всё

private void getResult(String mA, String mB, String mC) {
		// TODO Auto-generated method stub
		//Объявление переменных
        int mValueA; int mValueB; int mValueC;
        //Проверяем были ли введенны данные вообще
        if (a.length() == 0) {                                                       \\точнее вот это место ругается. что его здесь не устраивает?
            a = "1";
            mValueA = 1;
        } 
        else {
            mValueA = Integer.parseInt(a);
        }
        //Достаем из строки число типа int
        if (b.length() == 0) {
            b = "0"; 
            mValueB = 0;
        } else {
            mValueB = Integer.parseInt(b);
        }
        if (c.length() == 0) {
            c = "0"; mValueC = 0;
        } else {
            mValueC = Integer.parseInt(c);
        }
        //Передаем числовые данные функции расчета уравнения
        Discrim(mValueA, mValueB, mValueC);
        /*Собираем строку для вывода данных * Подготовка основного уравнения * a не должно равняться 0 */
        if (mValueA == 0)
            mResult = 1 + "x2";
        else
            mResult = a + "x2";
        if (mValueB < 0 )
            mResult += b + "x";
        else
            mResult += "+" + b + "x";
        if (mValueC < 0)
            mResult += c + " = 0";
        else
            mResult += "+" + c + "= 0";
        //Вывод уравнения расчета x1 и x2
        mResult += "x1,x2 = (-(" + b + ")&plusmn√" + b + "2-4×" + a + "×" + c + ")/2×" + a + " = 0";
        /*В зависимости от значения дискриминанта добавляем данные. * D < 0 - строка c сообщением * D > 0 - результаты расчета x1 и x2 */
        if (D < 0) {
            mResult += "Уравнение не имеет решения, так как дискриминант меньше 0";
        } else {
            mResult += "x1 = -(" + b + ") + √" + D + " = " + x1 + "";
            mResult += "x2 = -(" + b + ") - √" + D + " = " + x2 + "";
        }
    }

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Логи падения приложения

Сообщение Foenix » 30 ноя 2013, 10:12

А в чем баг написано в логе строчкой выше!!
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Nik
Сообщения: 63
Зарегистрирован: 08 ноя 2013, 21:17
Откуда: Pyatigorsk
Контактная информация:

Re: Логи падения приложения

Сообщение Nik » 30 ноя 2013, 10:15

Foenix писал(а):А в чем баг написано в логе строчкой выше!!
11-30 06:51:22.671: E/AndroidRuntime(1005): java.lang.NullPointerException
нуль? а что нуль? откуда он пришел?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Логи падения приложения

Сообщение Foenix » 30 ноя 2013, 10:23

щелкай туда два раза. В той строчке будет ошибка, значит какая-то переменная не проинициализирована. Т.е. ищи ее инициализацию выше - или ее вообще нет, или оператор не сработал - что-то не найдено и так далее.
NPE в 99% случаев легкая ошибка, ее можно найти самому.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Ответить