GWT:使用 StackTraceDeobfuscator 远程记录和反混淆堆栈跟踪

GWT: Remote Logging and deobfuscating the stack trace with the StackTraceDeobfuscator

我在使用远程日志记录时遇到问题,我的堆栈跟踪被混淆了。我对此进行了大量研究,this blog 可能是我找到的最有用的参考资料。但是,查看博客中的提示 5 和 6,我得到的印象是 StackTraceDeobfuscator 可以在不将以下内容添加到我的 GWT 模块的情况下使用

<set-property name="compiler.stackMode" value="emulated" />
<set-configuration-property name="compiler.emulatedStack.recordLineNumbers"
value="true" />

我宁愿不设置 compiler.stackMode 属性 并增加我的 javascript 包的大小,但我开始怀疑这是否可能。以上 属性 实际上是对我的客户端堆栈跟踪进行去混淆处理的要求吗?有没有其他选择?我想避免进行可能影响应用程序性能或安全性的更改。

谢谢!

我最初提供去混淆堆栈跟踪的方法涉及不情愿地设置我在描述中提到的属性。

<set-property name="compiler.stackMode" value="emulated" />
<set-configuration-property name="compiler.emulatedStack.recordLineNumbers"
value="true" />

但是,这些新的编译指令确实增加了我的 Javascript 的大小,并导致了性能问题。当使用我们的一些客户仍在使用的 Internet Explorer 8 时,您可以在网站上执行一些操作,这些操作会导致 "long running script" 弹出窗口。

我在描述中没有提到的一个重要细节是,这个问题是在 GWT 升级期间出现的。

以前,我们在 GWT RemoteServiceServlet 的子 class 中使用 com.google.gwt.logging.server.StackTraceDeobfuscator。该 Deobfuscator 现在已弃用,我们移至 com.google.gwt.core.server.StackTradeDeobfuscator。事实证明,所指出的问题与用于从新静态工厂方法获得 StackTraceDeobfuscator 的符号映射目录路径有关。修复后,我可以删除 compiler.stackModecompiler.emulatedStack.recordLineNumbers 属性,同时仍然从客户端接收到去混淆的堆栈跟踪。