我已经部署了一个GWT应用程序并设置了一个异常报告器,以便在客户端抛出异常时在服务器上获取日志条目。通常这是非常有用的,我已经用这些信息杀死了很多错误。但是,这个堆栈跟踪令我难过:
com.allen_sauer.gwt.log.server.ServerLogImplJDK14 log: Uncaught Exception:
com.google.gwt.event.shared.UmbrellaException: One or more exceptions caught, see full set in UmbrellaException#getCauses
at Unknown.EJb(StackTraceCreator.java:147)
at Unknown.SAb(StackTraceCreator.java:387)
at Unknown.eHb(Throwable.java:46)
at Unknown.KXb(com.google.gwt.dev.jjs.ast.JProgram:0)
at Unknown.AM(SimpleEventBus.java:214)
at Unknown.EM(SimpleEventBus.java:103)
at Unknown.bXb(HandlerManager.java:96)
at Unknown.ux(Widget.java:107)
at Unknown.USb(DomEvent.java:116)
at Unknown.xx(UIObject.java:529)
at Unknown.Mx(Widget.java:141)
at Unknown.ixc(DOM.java:1264)
at Unknown.anonymous(DOMImplStandard.java:187)
at Unknown.HIb(Impl.java:214)
at Unknown.anonymous(Impl.java:57)
at .(:0)
at ==================Caused by==================.(:0)
at Unknown.EJb(StackTraceCreator.java:147)
at Unknown.SAb(StackTraceCreator.java:387)
at Unknown.y0c(Throwable.java:46)
at Unknown.KZc(Number.java:192)
at Unknown.Y$c(Float.java:60)
at Unknown.wV(TextBoxBase.java:106)
at Unknown.yTb(ClickEvent.java:53)
at Unknown.AM(SimpleEventBus.java:204)
at Unknown.EM(SimpleEventBus.java:103)
at Unknown.bXb(HandlerManager.java:96)
at Unknown.ux(Widget.java:107)
at Unknown.USb(DomEvent.java:116)
at Unknown.xx(UIObject.java:529)
at Unknown.Mx(Widget.java:141)
at Unknown.ixc(DOM.java:1264)
at Unknown.anonymous(DOMImplStandard.java:187)
at Unknown.HIb(Impl.java:214)
at Unknown.anonymous(Impl.java:57)
这些都是GWT文件,除了StackTraceCreator,它是gwt-log的一部分,该程序向我报告这些例外情况。我从来没有在开发机器上看到这个例外,我甚至没有复制步骤的开始。
如何开始跟踪此事?
答案 0 :(得分:2)
默认情况下,GWT应用程序使用obfuscation turned on进行编译。
因此,您可以关闭模糊处理,或尝试重新符号化堆栈跟踪,如本期gwt-log报告中所述:http://code.google.com/p/gwt-log/issues/detail?id=38
这应该最好与.gwt.xml文件中的这些选项一起使用(我假设你已经这样做了):
<set-property name="compiler.emulatedStack" value="true" />
<set-configuration-property name="compiler.emulatedStack.recordLineNumbers"
value="true"/>
<set-configuration-property name="compiler.emulatedStack.recordFileNames"
value="true"/>