【发布时间】:2014-07-08 15:56:38
【问题描述】:
直到今年 5 月,我还在使用 GWT 2.5.1 和 simple DevMode 并且能够发送带有堆栈跟踪的混淆异常根据this brilliant article 使用符号映射在那里服务器和去混淆它们。这对我帮助很大。
自 6 月起,我成功切换到 GWT 2.6.1 和 SuperDevMode,与 simple DevMode 相比提供了相当不错的体验,并且使用起来更简单.
但是,我注意到我的堆栈跟踪不再在服务器上正确反混淆了。 即使在去混淆之后,我也会不断得到混淆的堆栈跟踪。
以下是*.gwt.xml文件的相关内容:
<module rename-to="somemodule">
<!-- inherits, stylesheet, entry-point, source elements are going here -->
<add-linker name="xsiframe" />
<extend-property name="locale" values="uk" />
<set-property-fallback name="locale" value="uk" />
<set-property name="compiler.stackMode" value="emulated" />
<set-configuration-property name="compiler.emulatedStack.recordLineNumbers" value="true" />
<set-property name="gwt.logging.logLevel" value="INFO" />
<set-property name="gwt.logging.enabled" value="TRUE" />
<set-property name="gwt.logging.developmentModeHandler" value="ENABLED" />
<set-property name="gwt.logging.systemHandler" value="DISABLED" />
<set-property name="gwt.logging.popupHandler" value="DISABLED" />
<set-property name="gwt.logging.consoleHandler" value="ENABLED" />
<set-property name="gwt.logging.firebugHandler" value="ENABLED" />
</module>
以下是处理客户端异常的服务器端代码:
import static com.google.gwt.user.client.rpc.RpcRequestBuilder.STRONG_NAME_HEADER;
import com.google.gwt.core.client.impl.SerializableThrowable;
import com.google.gwt.logging.server.StackTraceDeobfuscator;
// ....
@Override
public void logClientException(final SerializableThrowable ex, final String userAgent, final String platform, final String moduleName) {
final HttpServletRequest request = getThreadLocalRequest();
final String symbolMapsDirectory = "webapps/" + getTomcatWebappFolder(request.getServletContext()) + "/WEB-INF/deploy/" + moduleName + "/symbolMaps";
final String permutationName = request.getHeader(STRONG_NAME_HEADER);
final Throwable original = new StackTraceDeobfuscator(symbolMapsDirectory).deobfuscateThrowable(ex.getThrowable(), permutationName);
logClientException(original, userAgent, platform);
}
从 GWT 2.5.1 转移到 GWT 2.6.1 时我是否遗漏了什么?
非常感谢您的任何帮助!
【问题讨论】:
标签: java gwt stack-trace deobfuscation gwt-super-dev-mode