2011-10-18 317 views
6

我们已经实现了一种通用机制,可以从GWT客户端登录服务器异常。 当然,他们中的一些意外的异常(如NPE),因此我们得到那种这些堆栈跟踪在我们的日志(节选):从javascript堆栈跟踪中查找Java实际堆栈跟踪

 
java.lang.Throwable: One or more exceptions caught, see full set in UmbrellaException#getCauses 
     at Unknown.Hq(Unknown Source) 
     at Unknown.ihb(Unknown Source) 
     at Unknown.anonymous(Unknown Source) 
     at Unknown.anonymous(Unknown Source) 
     at Unknown.anonymous(Unknown Source) 
Caused by: java.lang.Throwable: (TypeError): d is null 
stack: EG([object Object],[object Object])@http://domain/path/0B15791BA99231E6B88EAF3BDE38EB64.cache.html:3282 

fileName: http://domain/path/0B15791BA99231E6B88EAF3BDE38EB64.cache.html 
lineNumber: 3282 
     at Unknown.EG(Unknown Source) 
     at Unknown.DG(Unknown Source) 

我如何可以找到类和行号原始的java源码?

我不想部署详细的编译版本,因为我没有关于确切场景的信息,也无法重现异常。

+0

那么这是否意味着您需要为每个模块划分记录器并明确设置位置? –

回答

6

GWT编译器输出在-deploy-extra位置在symbolMap文件的映射(其中-deploy默认为-warWEB-INF/deploy,和-extra默认情况下不发射)。
我用它手动不时地调试怪异的东西。

您也可以使用StackTraceDeobfuscator以编程方式去混淆痕迹。
仅供参考,此类由RemoteLoggingServiceImpl GWT-RPC servlet和Logging RequestFactory服务使用;分别由SimpleRemoteLogHandlerRequestFactoryLogHandler调用(它们是java.util.logging.LogHandler,您可以使用GWT支持的logging API)。在这种情况下,它会查看web应用程序的WEB-INF/deploy(这是为什么-deploy默认那里)。

+2

我做了以下操作: 1.在模块xml文件中添加了。 –

+3

2.覆盖RemoteLoggingServiceImpl并调用setSymbolMapsDirectory(“WEB-INF/deploy/{Modulename}/symbolMaps /”)。 –

+0

虽然它在文档中,但不必添加-extra选项。至少,我添加它时没有看到任何区别。 –