aboutsummaryrefslogtreecommitdiff
path: root/lldb/examples/python/crashlog.py
diff options
context:
space:
mode:
authorJonas Devlieghere <jonas@devlieghere.com>2022-02-14 12:12:54 -0800
committerJonas Devlieghere <jonas@devlieghere.com>2022-02-14 12:18:12 -0800
commit343662a0287845eceba068df6ce59eddcbe7beb1 (patch)
tree8700a642d04ee904eac969b12621b6fc60cf7f36 /lldb/examples/python/crashlog.py
parentd52866e1a82dab57ad1b58a8bf21ca63eae2e155 (diff)
downloadllvm-343662a0287845eceba068df6ce59eddcbe7beb1.zip
llvm-343662a0287845eceba068df6ce59eddcbe7beb1.tar.gz
llvm-343662a0287845eceba068df6ce59eddcbe7beb1.tar.bz2
[crashlog] Change heuristic to stripping the meta data from crashlogs
Instead trying to pro-actively determine if the first line in a crashlog contains meta data, change the heuristic to do the following: 1. To trying to parse the whole file. If that fails, then: 2. Strip the first line and try parsing the remainder of the file. If that fails, then: 3. Fall back to the textual crashlog parser. rdar://88580543 Differential revision: https://reviews.llvm.org/D119755
Diffstat (limited to 'lldb/examples/python/crashlog.py')
-rwxr-xr-xlldb/examples/python/crashlog.py24
1 files changed, 12 insertions, 12 deletions
diff --git a/lldb/examples/python/crashlog.py b/lldb/examples/python/crashlog.py
index ec9f2d4..63be066 100755
--- a/lldb/examples/python/crashlog.py
+++ b/lldb/examples/python/crashlog.py
@@ -397,7 +397,7 @@ class CrashLogFormatException(Exception):
class CrashLogParseException(Exception):
- pass
+ pass
class CrashLogParser:
@@ -414,22 +414,22 @@ class JSONCrashLogParser:
self.verbose = verbose
self.crashlog = CrashLog(debugger, self.path, self.verbose)
+ def parse_json(self, buffer):
+ try:
+ return json.loads(buffer)
+ except:
+ # The first line can contain meta data. Try stripping it and try
+ # again.
+ head, _, tail = buffer.partition('\n')
+ return json.loads(tail)
+
def parse(self):
with open(self.path, 'r') as f:
buffer = f.read()
- # Skip the first line if it contains meta data.
- head, _, tail = buffer.partition('\n')
try:
- metadata = json.loads(head)
- if 'app_name' in metadata and 'app_version' in metadata:
- buffer = tail
- except ValueError:
- pass
-
- try:
- self.data = json.loads(buffer)
- except ValueError:
+ self.data = self.parse_json(buffer)
+ except:
raise CrashLogFormatException()
try: