diff --git a/src/main/java/ru/windcorp/progressia/ProgressiaLauncher.java b/src/main/java/ru/windcorp/progressia/ProgressiaLauncher.java index 3a4608c..330fa16 100644 --- a/src/main/java/ru/windcorp/progressia/ProgressiaLauncher.java +++ b/src/main/java/ru/windcorp/progressia/ProgressiaLauncher.java @@ -39,6 +39,7 @@ public class ProgressiaLauncher { CrashReports.registerProvider(new OpenALContextProvider()); CrashReports.registerProvider(new ArgsContextProvider()); CrashReports.registerProvider(new LanguageContextProvider()); + CrashReports.registerProvider(new StackTraceProvider()); // Analyzers CrashReports.registerAnalyzer(new OutOfMemoryAnalyzer()); diff --git a/src/main/java/ru/windcorp/progressia/common/util/crash/providers/StackTraceProvider.java b/src/main/java/ru/windcorp/progressia/common/util/crash/providers/StackTraceProvider.java new file mode 100644 index 0000000..0469dca --- /dev/null +++ b/src/main/java/ru/windcorp/progressia/common/util/crash/providers/StackTraceProvider.java @@ -0,0 +1,24 @@ +package ru.windcorp.progressia.common.util.crash.providers; + +import ru.windcorp.progressia.common.util.crash.ContextProvider; + +import java.util.Map; + +public class StackTraceProvider implements ContextProvider { + @Override + public void provideContext(Map output) { + StackTraceElement[] stackTraceBuffer = Thread.currentThread().getStackTrace(); + StringBuilder sb = new StringBuilder(); + sb.append("\n"); + for (int i = 4; i < stackTraceBuffer.length; i++) { + sb.append(stackTraceBuffer[i].toString()).append("\n"); + } + + output.put("Reported from " + Thread.currentThread().getName(), sb.toString()); + } + + @Override + public String getName() { + return "Stack Trace Context Provider"; + } +}