Stay organized with collections
Save and categorize content based on your preferences.
R8 retrace is a tool for obtaining the original stack trace from an obfuscated
stack trace. The stack trace is reconstructed by matching class and method names
in a mapping file to their original definitions.
Usage
To retrace an obfuscated stack trace, pass the mapping file to retrace:
If no stack trace file is given on the command line, R8 retrace waits for
the stack trace to be entered by the user through standard input. After input,
terminate the input stream:
Linux, macOS: Control+D
Windows: Control+Z+Enter
The retraced output is then written to standard output.
Options
The following table describes the command-line options of R8 retrace:
Option
Required?
Description
--verbose
no
Prints more information, such as method parameters and method return type.
--info
no
Sets the diagnostic level to info. For a more in-depth look,
refer to DiagnosticsHandler.
--quiet
no
Reduces the amount of information printed to increase focus.
--regex <regular_exp>
no
Overwrites the default regular expression for parsing stack trace lines.
For example, the following is a regex that can parse basic stack traces:
(?:.*? at %c\.%m\(%s(?::%l)?\))|(?:(?:.*?[:"] +)?%c(?::.*)?).
Usage notes
R8 retrace uses a generated mapping file for mapping obfuscated class and
method names back to the original definition. For more information about
shrinking your app so that it can be retraced correctly, see
Decode an obfuscated stack trace.
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2023-04-12 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2023-04-12 UTC."],[],[],null,["# R8 retrace is a tool for obtaining the original stack trace from an obfuscated\nstack trace. The stack trace is reconstructed by matching class and method names\nin a mapping file to their original definitions.\n| **Note:** R8 retrace is a standalone tool in version 4.0 of the command-line tools package, released with Android Studio 4.2.\n|\n| To download the command-line tools package with the SDK Manager, see\n| [Update your tools with the\n| SDK Manager](/studio/intro/update#sdk-manager). The SDK Manager installs R8 retrace in\n| `cmdline-tools/`\u003cvar translate=\"no\"\u003eversion\u003c/var\u003e`/bin/`.\n|\n| To download the command-line tools package using the command line, see\n| [`sdkmanager`](/studio/command-line/sdkmanager).\n\nUsage\n-----\n\nTo retrace an obfuscated stack trace, pass the mapping file to `retrace`: \n\n retrace \u003cvar translate=\"no\"\u003e path-to-mapping-file [path-to-stack-trace-file] [options] \u003c/var\u003e\n\nIf no stack trace file is given on the command line, R8 retrace waits for\nthe stack trace to be entered by the user through standard input. After input,\nterminate the input stream:\n\n- **Linux, macOS:** Control+D\n- **Windows:** Control+Z+Enter\n\nThe retraced output is then written to standard output.\n\nOptions\n-------\n\nThe following table describes the command-line options of R8 retrace:\n\n| Option | Required? | Description |\n|---------------------------------------------------------|-----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `--verbose` | no | Prints more information, such as method parameters and method return type. |\n| `--info` | no | Sets the diagnostic level to `info`. For a more in-depth look, refer to [DiagnosticsHandler](https://r8.googlesource.com/r8/+/refs/heads/main/src/main/java/com/android/tools/r8/DiagnosticsHandler.java). |\n| `--quiet` | no | Reduces the amount of information printed to increase focus. |\n| `--regex `\u003cvar translate=\"no\"\u003e<regular_exp>\u003c/var\u003e | no | Overwrites the default regular expression for parsing stack trace lines. For example, the following is a regex that can parse basic stack traces: `(?:.*? at %c\\.%m\\(%s(?::%l)?\\))|(?:(?:.*?[:\"] +)?%c(?::.*)?)`. |\n\nUsage notes\n-----------\n\nR8 retrace uses a generated mapping file for mapping obfuscated class and\nmethod names back to the original definition. For more information about\nshrinking your app so that it can be retraced correctly, see\n[Decode an obfuscated stack trace](/studio/build/shrink-code#decode-stack-trace)."]]