public class StackTraceDeobfuscator
extends java.lang.Object
<set-property name="compiler.stackMode" value="emulated"
/> in your .gwt.xml module file for non-Chrome browsers or
<set-property name="compiler.useSourceMaps" value="true"/> for Chrome, and
moved your symbol map files to a location accessible by your server sever side code. You can use
the GWT compiler -deploy command line argument to specify the location of the folder
into which the generated symbolMaps directory is written. By default, the final
symbolMaps directory is war/WEB-INF/deploy/yourmodulename/symbolMaps/.
Pass the resulting directory location into this class' symbolMapsDirectory
constructor or setSymbolMapsDirectory(String) setter method.
TODO(unnurg): Combine this code with similar code in JUnitHostImpl| Modifier and Type | Field and Description |
|---|---|
(package private) java.util.regex.Pattern |
fragmentIdPattern |
protected java.io.File |
symbolMapsDirectory |
| Constructor and Description |
|---|
StackTraceDeobfuscator(java.lang.String symbolMapsDirectory)
Creates a deobfuscator that loads symbol map files from the given directory.
|
StackTraceDeobfuscator(java.lang.String symbolMapsDirectory,
boolean lazyLoad)
Creates a deobfuscator that loads symbol map files from the given directory.
|
| Modifier and Type | Method and Description |
|---|---|
java.util.logging.LogRecord |
deobfuscateLogRecord(java.util.logging.LogRecord lr,
java.lang.String strongName)
Best effort resymbolization of a log record's stack trace.
|
java.lang.StackTraceElement[] |
deobfuscateStackTrace(java.lang.StackTraceElement[] st,
java.lang.String strongName)
Convenience method which resymbolizes an entire stack trace to extent possible.
|
java.lang.Throwable |
deobfuscateThrowable(java.lang.Throwable old,
java.lang.String strongName) |
protected java.io.InputStream |
getSourceMapInputStream(java.lang.String permutationStrongName,
int fragmentNumber) |
protected java.io.InputStream |
getSymbolMapInputStream(java.lang.String permutationStrongName)
Retrieves a new
InputStream for the given permutation strong name. |
java.lang.StackTraceElement |
resymbolize(java.lang.StackTraceElement ste,
java.lang.String strongName)
Best effort resymbolization of a single stack trace element.
|
void |
setSymbolMapsDirectory(java.lang.String symbolMapsDirectory) |
final java.util.regex.Pattern fragmentIdPattern
protected java.io.File symbolMapsDirectory
public StackTraceDeobfuscator(java.lang.String symbolMapsDirectory)
-deploy command line
argument.symbolMapsDirectory - the symbolMaps directory, with or without trailing
directory separator characterpublic StackTraceDeobfuscator(java.lang.String symbolMapsDirectory,
boolean lazyLoad)
-deploy command line
argument.symbolMapsDirectory - the symbolMaps directory, with or without trailing
directory separator characterlazyLoad - if true, only symbols requested to be deobfuscated are cached. This provides
a large memory savings at the expense of occasional extra disk reads.public java.util.logging.LogRecord deobfuscateLogRecord(java.util.logging.LogRecord lr,
java.lang.String strongName)
lr - the log record to resymbolizestrongName - the GWT permutation strong namepublic java.lang.StackTraceElement[] deobfuscateStackTrace(java.lang.StackTraceElement[] st,
java.lang.String strongName)
st - the stack trace to resymbolizestrongName - the GWT permutation strong namepublic java.lang.Throwable deobfuscateThrowable(java.lang.Throwable old,
java.lang.String strongName)
public java.lang.StackTraceElement resymbolize(java.lang.StackTraceElement ste,
java.lang.String strongName)
ste - the stack trace element to resymbolizestrongName - the GWT permutation strong namepublic void setSymbolMapsDirectory(java.lang.String symbolMapsDirectory)
protected java.io.InputStream getSourceMapInputStream(java.lang.String permutationStrongName,
int fragmentNumber)
throws java.io.IOException
java.io.IOExceptionprotected java.io.InputStream getSymbolMapInputStream(java.lang.String permutationStrongName)
throws java.io.IOException
InputStream for the given permutation strong name. This implementation,
which subclasses may override, returns a InputStream for the
permutation-strong-name.symbolMap file in the symbolMaps directory.permutationStrongName - the GWT permutation strong nameInputStreamjava.io.IOException