The specific example I have in mind involves the currently-alpha game Minecraft, but this is a general question that I think warrants some conversation.Minecraft is written in Java, and stack traces usually look like this (real example):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)Obviously these are not the real package and method names that the developer uses when he writes.  Since he is in an alpha stage, it seems that the developer should like to be able to make sense of his stack traces, especially if someone is able to provide one for a bug report.  As this stands, it's mostly meaningless.What advantage could one possibly hope to gain by obfuscating his code like this that overcomes the drawbacks of more difficult bug identification?
What are the advantages of obfuscating release code?
obfuscation
We obfuscate our Java code too....The advantage is that it makes it harder to reverse-engineer (if you are worried about someone stealing your code base and using it as a base to create a similar competing product, for example, etc).You can get the original stack trace back: there are obfuscation tools out there which create special reference files which you can use to run the obfuscated stack traces through, and it comes out with the original source stack trace. These are generated by the obfuscation process itself, so you can't get the original stack trace back unless you have your hands on the reference file that you used to obfuscate the code in the first place.This has no disadvantages really. :)