Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2624)

Unified Diff: build/android/stacktrace/java_deobfuscate.py

Issue 2952283002: java_deobfuscate.py: Update regexp to match thread dump stacks (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/stacktrace/java_deobfuscate.py
diff --git a/build/android/stacktrace/java_deobfuscate.py b/build/android/stacktrace/java_deobfuscate.py
index a468ec30556f733ec2be8625c8a2b0bf9a73e1a9..c1279a314ac977aa2afa2096e6c672fb6c9e6cc3 100755
--- a/build/android/stacktrace/java_deobfuscate.py
+++ b/build/android/stacktrace/java_deobfuscate.py
@@ -10,28 +10,19 @@ mangled by ProGuard. Takes stack traces from stdin (eg. adb logcat |
java_deobfuscate.py proguard.mapping) and files.
"""
-# Can just run:
-# java -jar third_party/proguard/lib/retrace.jar -regex \
-# "(?:.*?\bat\s+%c\.%m\s*\(%s(?::%l)?\)\s*)|(?:(?:.*?[:\"]\s+)?%c(?::.*)?)" \
-# ~/mapping
-# in terminal to achieve same effect as this tool.
-
import argparse
import os
-import subprocess
-import sys
-
-_THIRD_PARTY_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__),
- os.pardir, os.pardir, os.pardir,
- 'third_party'))
-sys.path.append(os.path.join(_THIRD_PARTY_DIR, 'catapult', 'devil'))
-from devil.utils import cmd_helper
+_SRC_DIR = os.path.normpath(
+ os.path.join(os.path.dirname(__file__), os.pardir, os.pardir, os.pardir))
-# This regex is taken from
+# This regex is based on the one from:
# http://proguard.sourceforge.net/manual/retrace/usage.html.
+# But with the "at" part changed to "(?::|\bat)", to account for lines like:
mikecase (-- gone --) 2017/06/22 20:34:16 Do you have an example of the type of lines this n
agrieve 2017/06/23 01:48:22 Done.
+# 06-22 13:58:02.895 4674 4674 E THREAD_STATE: bLA.a(PG:173)
_LINE_PARSE_REGEX = (
- r'(?:.*?\bat\s+%c\.%m\s*\(%s(?::%l)?\)\s*)|(?:(?:.*?[:"]\s+)?%c(?::.*)?)')
+ r'(?:.*?(?::|\bat)\s+%c\.%m\s*\(%s(?::%l)?\)\s*)|'
+ r'(?:(?:.*?[:"]\s+)?%c(?::.*)?)')
def main():
@@ -44,16 +35,14 @@ def main():
help='Stacktrace file to be deobfuscated.')
args = parser.parse_args()
- retrace_path = os.path.join(_THIRD_PARTY_DIR, 'proguard',
- 'lib', 'retrace.jar')
+ retrace_path = os.path.join(
+ _SRC_DIR, 'third_party', 'proguard', 'lib', 'retrace.jar')
- base_args = ['java', '-jar', retrace_path, '-regex', _LINE_PARSE_REGEX,
- args.mapping_file]
+ cmd = ['java', '-jar', retrace_path, '-regex', _LINE_PARSE_REGEX,
+ args.mapping_file]
if args.stacktrace:
- subprocess.call(base_args + [args.stacktrace])
- else:
- for line in cmd_helper.IterCmdOutputLines(base_args):
- print line
+ cmd.append(args.stacktrace)
+ os.execvp('java', cmd)
if __name__ == '__main__':
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698