summaryrefslogtreecommitdiff
path: root/src/com/android/loganalysis/parser/JavaCrashParser.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/loganalysis/parser/JavaCrashParser.java')
-rw-r--r--src/com/android/loganalysis/parser/JavaCrashParser.java16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/com/android/loganalysis/parser/JavaCrashParser.java b/src/com/android/loganalysis/parser/JavaCrashParser.java
index f1c87a1..e8d561a 100644
--- a/src/com/android/loganalysis/parser/JavaCrashParser.java
+++ b/src/com/android/loganalysis/parser/JavaCrashParser.java
@@ -41,6 +41,10 @@ public class JavaCrashParser implements IParser {
*/
private static final Pattern AT = Pattern.compile("^\tat .+$");
+ // Sometimes logcat explicitly marks where exception begins and ends
+ private static final String BEGIN_MARKER = "----- begin exception -----";
+ private static final String END_MARKER = "----- end exception -----";
+
/**
* {@inheritDoc}
*
@@ -56,6 +60,18 @@ public class JavaCrashParser implements IParser {
boolean inStack = false;
for (String line : lines) {
+ if (line.contains(BEGIN_MARKER)) {
+ inMessage = false;
+ inCausedBy = false;
+ inStack = false;
+ stack = new StringBuilder();
+ message = new StringBuilder();
+ jc = null;
+ continue;
+ }
+ if (line.contains(END_MARKER)) {
+ break;
+ }
if (!inStack) {
Matcher exceptionMatch = EXCEPTION.matcher(line);
if (exceptionMatch.matches()) {