2011-10-18 313 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選項。至少,我添加它時沒有看到任何區別。 –