Отчет о сбое Google Analytics показывает только первую строку трассировки стека

Мое приложение использует Google Analytics для отслеживания исключений и сбоев (среди прочих). Я использую эту функцию, чтобы получить трассировку стека:

public static void sendErrorReportViaGoogleAnalytics(Exception e) {

    e.printStackTrace();
    Tracker myTracker = EasyTracker.getTracker();
    myTracker.sendException(getDescription(e), false);
}

public static String getDescription(Exception t) {

    final StringBuilder result = new StringBuilder();
    result.append(t.toString());
    result.append(',');
    String oneElement;

    for (StackTraceElement element : t.getStackTrace()) {
        oneElement = element.toString();
        result.append(oneElement);
        result.append(",");
    }

    return result.toString();
}

Это работает нормально, когда я говорю об исключениях, я просто вызываю sendErrorReportViaGoogleAnalytics() в части catch моих кодов обработки исключений, но когда дело доходит до сбоев, я получаю только одну строку трассировки стека, как

Binary XML file line #11: Error inflating class fragment

Я поставил

<bool name="ga_reportUncaughtExceptions">true</bool>

в analytics.xml, так как я использую EasyTracker.

Что я должен сделать, чтобы получить полную трассировку стека также в случае сбоев?

2 ответа

Решение

Поскольку вы не описали то, что на самом деле сделали, чтобы отследить сбои, я могу отправить вас только в документы: https://developers.google.com/analytics/devguides/collection/android/v2/exceptions

Если вы используете EasyTracker, вы можете объявить:

<bool name="ga_reportUncaughtExceptions">true</bool>

в противном случае вы можете реализовать класс ExceptionReporter, как описано, и присоединить его к вашему потоку.

Просто столкнулся с этой проблемой. Просто вставьте данный код в метод BaseApplication.onCreate() вашего проекта или в другое место, чтобы установить пользовательский ExceptionReporter для необработанных исключений. И не забудьте объявить данный флаг в analytics.xml.

<bool name="ga_reportUncaughtExceptions">true</bool>

Нестандартный репортер исключений:

ExceptionReporter myHandler =
        new ExceptionReporter(EasyTracker.getInstance(this), GAServiceManager.getInstance(),
                              Thread.getDefaultUncaughtExceptionHandler(), this);

    StandardExceptionParser exceptionParser =
            new StandardExceptionParser(getApplicationContext(), null) {
                    @Override
                    public String getDescription(String threadName, Throwable t) {
                        return "{" + threadName + "} " + Log.getStackTraceString(t);
                    }
                };

    myHandler.setExceptionParser(exceptionParser);

    // Make myHandler the new default uncaught exception handler.
    Thread.setDefaultUncaughtExceptionHandler(myHandler);
Другие вопросы по тегам