Поиск фактической трассировки стека Java по трассировке стека javascript - PullRequest
6 голосов
/ 18 октября 2011

Мы реализовали общий механизм, который регистрирует исключения сервера со стороны клиента GWT.Естественно, некоторые из них являются неожиданными исключениями (например, NPE), и поэтому мы получаем такие следы стека в нашем журнале (отрывок):

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-источнике?

Я не хочу развертывать подробную скомпилированную версию, поскольку у меня нет информации о точном сценарии и я не могу воспроизвести исключение.

1 Ответ

6 голосов
/ 18 октября 2011

Компилятор GWT выводит отображение в файлах SymbolMap в местоположениях -deploy и -extra (где -deploy по умолчанию равно -war WEB-INF/deploy, а -extra по умолчанию не отправляется).
Я использую его вручную , чтобы время от времени отлаживать странные вещи.

Вы также можете программно деобфусцировать следы, используя StackTraceDeobfuscator.
К вашему сведению, этот класс используется сервлетом RemoteLoggingServiceImpl GWT-RPC и сервисом Logging RequestFactory; соответственно вызывается SimpleRemoteLogHandler и RequestFactoryLogHandler (они java.util.logging.LogHandler s, которые вы можете использовать с logging API , который поддерживает GWT). В этом случае он просматривает WEB-INF/deploy веб-приложения (именно поэтому -deploy по умолчанию там).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...