2012-05-20 41 views
0

我正在整理我的代碼庫,以便它可以在google的閉包編譯器上使用ADVANCED_OPTIMIZATIONS進行編譯。訪問用於調試Closure Compiler的源代碼映射?

正確設置此任務所需的調試環境(源映射文件,chrome,包裝已編譯的js文件)後,我偶然發現了try catch問題。看來,在我的代碼庫中大量使用try/catch語句已經讓我不滿。在幾乎所有的方法和函數中,我使用了一個典型的try {} catch(e){ss.error(e);}語句,其中ss.error()是一個通用的錯誤處理程序,依賴於環境或者打印出調試東西或報告例外...

在熨燙我的代碼庫的過程中,當我得到一個錯誤,我需要修復,會發生什麼是,而不是讓Chrome報告有問題的文件和線,它指向到錯誤處理程序ss.error()。因此,讓我無法回溯問題。然而,ss.error()函數打印的問題源自於:

錯誤!類型:類型錯誤在DB(/jsc/compiled.js:547:246)消息:無法調用 法「KA」未定義來源:

後,我得到這些類型的錯誤,我必須做兩步: 1.在第547行char 246上編譯代碼,並試圖找出我的未編譯代碼中涉及哪個部分... 2.找到它後,刪除try/catch塊,以便直接和更多清楚地看到是什麼造成了錯誤...

我必須說我對這個工作流程不滿意,需要找到一個替代方案,這兩個方法都能讓我正確地捕捉異常並調試我編譯和未編譯的代碼,同時保持心智健全= )

我想以某種方式使用線:CharPosition信息查詢源映射並有ss.error()函數做映射到我的未編譯源代碼

想法?

+0

您是否在編譯後的js文件的底部包含對源代碼映射的引用:'// @ sourceMappingURL = src/scripts.source.map.js'?您是否查看了[JavaScript源地圖簡介](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/)? –

+2

不是你正在尋找的答案,但「調試」標誌加上「formatting = PRETTY_PRINT」使調試比處理源地圖更容易。 –

+0

另外,不是您正在尋找的解決方案,但您也可以讓您的錯誤處理程序捕獲異常的堆棧跟蹤。 – John

回答

0

作爲閉包編譯器的一部分,有一個到SourceMaps的java接口。還有各種修復狀態下的JS實現。我儘量保持鏈接到他們最新的位置:

http://code.google.com/p/closure-compiler/wiki/SourceMaps

對於Java實現,你只需加載使用SourceMapConsumerFactory源地圖,界面非常簡單。