我想到的具体示例涉及当前的Alpha游戏《我的世界》,但这是一个普遍的问题,我认为需要进行一些讨论。
Minecraft是用Java编写的,堆栈跟踪通常如下所示(实际示例):
java.lang.NullPointerException
at d.a(SourceFile:247)
at gi.b(SourceFile:92)
at bd.a(SourceFile:33)
at bn.a(SourceFile:69)
at bn.e(SourceFile:115)
at bn.d(SourceFile:103)
at net.minecraft.client.Minecraft.i(SourceFile:1007)
at net.minecraft.client.Minecraft.run(SourceFile:596)
at java.lang.Thread.run(Unknown Source)
显然,这些不是开发人员在编写时使用的实际包和方法名称。由于他处于Alpha阶段,因此开发人员似乎希望能够理解他的堆栈跟踪,特别是如果有人能够为错误报告提供一个。就目前而言,它几乎毫无意义。
克服这种难以识别错误的缺点的代码,可能会希望获得什么样的优势?
1
简而言之,混淆处理改变了对代码进行逆向工程的经济性,仅此而已。
—
Mark Booth 2012年