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 JUnitHostImplModifier 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.IOException
protected 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 nameInputStream
java.io.IOException