打印堆栈跟踪obfusated
我有这样的代码来处理未捕获的异常与GWT:打印堆栈跟踪obfusated
GWT.setUncaughtExceptionHandler(new GWT.UncaughtExceptionHandler() {
@Override
public void onUncaughtException(Throwable throwable) {
// Iterate over the trace and then print with $wnd.console.log
printStackTrace(throwable.getStackTrace());
}
});
然而,在浏览器控制台打印日志看起来是这样的:
"Unknown.Ol(Unknown Source)
Unknown.Nl(Unknown Source)
Unknown.Vl(Unknown Source)
Unknown.Hu(Unknown Source)
Unknown.Ku(Unknown Source)
Unknown.ju(Unknown Source)
Unknown.h6(Unknown Source)
Unknown.As(Unknown Source)
Unknown.j6(Unknown Source)
Unknown.u6(Unknown Source)
Unknown.L3(Unknown Source)
Unknown.k5(Unknown Source)
Unknown.hn(Unknown Source)
Unknown.mn(Unknown Source)
Unknown.ln/<(Unknown Source)
Unknown.anonymous(Unknown Source)
我怎样才能让这个显示像旧的GWT风格的实际堆栈跟踪?
这对我来说很有效,请记住它并不完美,但它会为您提供堆栈跟踪中的文件和行号。是的,这适用于gwt 2.7和超级开发模式。您需要将其添加到* .gwt.xml文件中。您可能想要关闭生产环境,因为它增加了很多代码膨胀,但使调试更加简单。
<set-property name="compiler.stackMode" value="emulated" />
<set-configuration-property name="compiler.emulatedStack.recordFileNames"
value="true" />
<set-configuration-property name="compiler.emulatedStack.recordLineNumbers"
value="true" />
谢谢克里斯。对于我来说,在设置属性,重新启动GWT服务器(开发模式)并重新加载网页后,客户端堆栈跟踪包含类名称和行号。仍然被模糊处理,但行号和类名非常有帮助。 – 2016-02-13 02:20:31
@jowierun是的,行号和类名是我用SuperDevMode得到的最好的。尽管我已经习惯了它,并且进行了增量刷新,所以它可以更早地发现问题。 – 2016-02-13 02:30:55
这帮我找到了我的问题,但是我得到的堆栈跟踪是错误的(?!)。我需要打开代码服务器(superdevmode)以获取有用的堆栈跟踪(包括可识别的方法名称)。 – 2016-12-29 00:51:28
请参阅http://stackoverflow.com/q/24264925/181497。从2.7开始,似乎无法完成(WTF,我知道)。它有助于使用'GWT.log',但是堆栈跟踪远不如应有的可读性和可用性。 – 2015-01-04 15:39:55
这样说,问题中的堆栈跟踪已被混淆,这意味着它不是来自超级开发模式 - SDM只生成PRETTY代码,所以堆栈跟踪至少*稍微*没用多少... – 2015-01-05 01:03:50