Usage

You can find the ReTrace jar in the lib directory of the ProGuard distribution. To run ReTrace, just type:

java -jar retrace.jar [options...] mapping_file [stacktrace_file]

Alternatively, the bin directory contains some short Linux and Windows scripts containing this command. These are the arguments:
mapping_file
Specifies the name of the mapping file, produced by ProGuard with the option "-printmapping mapping_file", while obfuscating the application that produced the stack trace.
stacktrace_file
Optionally specifies the name of the file containing the stack trace. If no file is specified, a stack trace is read from the standard input. Blank lines and unrecognized lines are ignored, as far as possible.
The following options are supported:
-verbose
Specifies to print out more informative stack traces that include not only method names, but also method return types and arguments.
-regex regular_expression
Specifies the regular expression that is used to parse the lines in the stack trace. Specifying a different regular expression allows to de-obfuscate more general types of input than just stack traces. The default is suitable for stack traces produced by most JVMs:
    (?:.*?\bat\s+%c\.%m\s*\(.*?(?::%l)?\)\s*)|(?:(?:.*?[:"]\s+)?%c(?::.*)?)
    
The regular expression is a Java regular expression (cfr. the documentation of java.util.regex.Pattern), with a few additional wildcards:
%c matches a class name (e.g. "myapplication.MyClass").
%C matches a class name with slashes (e.g. "myapplication/MyClass").
%t matches a field type or method return type (e.g. "myapplication.MyClass[]").
%f matches a field name (e.g. "myField").
%m matches a method name (e.g. "myMethod").
%a matches a list of method arguments (e.g. "boolean,int").
%l matches a line number inside a method (e.g. "123").
Elements that match these wildcards are de-obfuscated, when possible. Note that regular expressions must not contain any capturing groups. Use non-capturing groups instead: (?:...)
The restored stack trace is printed to the standard output. The completeness of the restored stack trace depends on the presence of line number tables in the obfuscated class files:

Preserving line number tables is explained in detail in this example in the ProGuard User Manual.

Unobfuscated elements and obfuscated elements for which no mapping is available will be left unchanged.


Copyright © 2002-2014 Eric Lafortune @ Saikoa.