打印堆栈跟踪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风格的实际堆栈跟踪?

+0

请参阅http://stackoverflow.com/q/24264925/181497。从2.7开始,似乎无法完成(WTF,我知道)。它有助于使用'GWT.log',但是堆栈跟踪远不如应有的可读性和可用性。 – 2015-01-04 15:39:55

+0

这样说,问题中的堆栈跟踪已被混淆,这意味着它不是来自超级开发模式 - SDM只生成PRETTY代码,所以堆栈跟踪至少*稍微*没用多少... – 2015-01-05 01:03:50

这对我来说很有效,请记住它并不完美,但它会为您提供堆栈跟踪中的文件和行号。是的,这适用于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" /> 
+0

谢谢克里斯。对于我来说,在设置属性,重新启动GWT服务器(开发模式)并重新加载网页后,客户端堆栈跟踪包含类名称和行号。仍然被模糊处理,但行号和类名非常有帮助。 – 2016-02-13 02:20:31

+0

@jowierun是的,行号和类名是我用SuperDevMode得到的最好的。尽管我已经习惯了它,并且进行了增量刷新,所以它可以更早地发现问题。 – 2016-02-13 02:30:55

+0

这帮我找到了我的问题,但是我得到的堆栈跟踪是错误的(?!)。我需要打开代码服务器(superdevmode)以获取有用的堆栈跟踪(包括可识别的方法名称)。 – 2016-12-29 00:51:28