2012-08-03 118 views
3

我想有可能解码出现在生产环境中的错误堆栈跟踪。有没有一种方法去混淆已经混淆了的GWT JavaScript代码,这被我混淆了?

+0

[为什么Tomcat无法显示实际的堆栈跟踪?](http://stackoverflow.com/questions/11688587/why-is-tomcat-unable-to-show-the-actual-stack-跟踪) – 2012-08-04 14:47:46

+0

远程日志记录肯定是我需要的。只有一点缺点可能是我的应用程序可以是可以离线运行的Chrome扩展程序。此外,远程日志记录可能会反对不跟踪策略,有些用户可能不喜欢它。谢谢 – honzajde 2012-08-06 01:38:50

+0

我相信堆栈跟踪(与为用户设计的错误消息相反)在用户向你发送消息之前并不是非常有用。为此,他们可能不得不上网。他们可以从一个对话框发送跟踪信息,或者他们甚至可以将其粘贴到电子邮件中 ​​- 所有您需要的是(混淆的)堆栈跟踪+排列的强名称。然后你可以在服务器上重新表示它(只需通过RemoteLoggingServiceImpl的代码挖掘一下,你应该能够编写一个可以为你做这个的小工具)。 – 2012-08-06 19:17:13

回答

1

您需要使用JsEmulateStackTrace类。它看起来非常复杂,并且从来没有真正实现过自己完全实现它。

http://code.google.com/p/google-web-toolkit/wiki/WebModeExceptions

这个假设的重新映射你的符号地图给你,但老实说,我怀疑它的工作原理完全因为我还没有看到一个图书馆/模块还提供适当的堆栈跟踪GWT。所以这个告诉我它很难或不完全工作。

老实说,在编译时创建一些代码以提供堆栈跟踪支持可能会更好,它允许您生成自己的堆栈跟踪,而不是使用实际的Java脚本堆栈跟踪。 IE ..你可能能够为你编译的所有类创建一个基类。也许有一个注释或其他东西。然后让你的构建脚本扩展所有的类,以便对开发透明,但包含在编译后的缓存文件中。你可以让你的基类获取类名或方法名或其他东西。并用一个可以弹出的简单堆栈进行管理。

+0

我认为这让我非常接近,文档指向[Resymbolization _/_ Deobfuscation](http://code.google.com/p/google-web-toolkit/wiki/WebModeExceptions#Resymbolization_/_Deobfuscation)。我认为还需要将堆栈跟踪并将其传递给gwt-logging以反混淆它(因为我不想使用远程日志记录)。大! – honzajde 2012-08-07 17:01:37

+0

gwt-logging也可能提供一些automagic de/obfuscating,这可能值得一看。另一种方法可能是包括你的源代码副本,并从那里查询类和线,但老实说,我认为找出网络模式的异常会更容易。 – 2012-08-09 17:06:12