Proguard 回溯输出混乱
我这里有来自 Android 市场的一款游戏的堆栈跟踪。我已经取消了它,但我无法真正理解它!
我不是在寻求错误本身的帮助,而是寻求如何解释它。
我从市场开始:
java.lang.IllegalArgumentException
at java.nio.Buffer.position(Buffer.java:299)
at com.a.a.k.o.a(Unknown Source)
at com.a.a.k.w.a(Unknown Source)
at com.a.a.k.w.onDrawFrame(Unknown Source)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1363)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1118)
但是 retrace.bat 输出了这个,它更长,所以我无法分辨 com.aakoa 是什么(例如)。
java.lang.IllegalArgumentException
at java.nio.Buffer.position(Buffer.java:299)
at com.eaw.graphics.WorldViewShader.void glSetMVPMatrix(float[])(Unknown Source)
void glSetNormalMatrix(com.eaw.graphics.AMatrix)
void SetVertices(java.nio.FloatBuffer)
void ApplyArgs(com.eaw.graphics.WorldViewShaderArgs)
at com.eaw.graphics.TriangleRenderer.void onDrawFrame(com.eaw.airrace.ILayer,com.eaw.airrace.StepOutput,boolean)(Unknown Source)
void loadTexture$332cd44f(int[],int,int)
void delayedLoadTexture(int[],int[],int,int)
at com.eaw.graphics.TriangleRenderer.void onDrawFrame(javax.microedition.khronos.opengles.GL10)(Unknown Source)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1363)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1118)
它在遮蔽期间是否将 4 个功能合并为 1 个?或者什么?
I have here a stack trace from one of my games from android market. I have de-proguarded it but I can't really understand it!
I'm not asking for help in the error itself, but just how to interpret this.
I started with this from Market:
java.lang.IllegalArgumentException
at java.nio.Buffer.position(Buffer.java:299)
at com.a.a.k.o.a(Unknown Source)
at com.a.a.k.w.a(Unknown Source)
at com.a.a.k.w.onDrawFrame(Unknown Source)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1363)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1118)
But retrace.bat has output this, which is longer, so I can't tell what com.a.a.k.o.a is (for exmaple).
java.lang.IllegalArgumentException
at java.nio.Buffer.position(Buffer.java:299)
at com.eaw.graphics.WorldViewShader.void glSetMVPMatrix(float[])(Unknown Source)
void glSetNormalMatrix(com.eaw.graphics.AMatrix)
void SetVertices(java.nio.FloatBuffer)
void ApplyArgs(com.eaw.graphics.WorldViewShaderArgs)
at com.eaw.graphics.TriangleRenderer.void onDrawFrame(com.eaw.airrace.ILayer,com.eaw.airrace.StepOutput,boolean)(Unknown Source)
void loadTexture$332cd44f(int[],int,int)
void delayedLoadTexture(int[],int[],int,int)
at com.eaw.graphics.TriangleRenderer.void onDrawFrame(javax.microedition.khronos.opengles.GL10)(Unknown Source)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1363)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1118)
Has it rolled 4 functions into 1 during obscuration? or what?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您应该将
-keepattributes SourceFile,LineNumberTable
添加到您的 proguard 配置文件中!You should add
-keepattributes SourceFile,LineNumberTable
to your proguard configuration file!您处理的代码和堆栈跟踪不包含行号,因此 ProGuard 无法判断混淆后的方法名称“a”对应于哪个原始方法名称。然后它打印出所有可能的替代方案。比照。 ProGuard 的回溯手册。
该手册还记录了如何在混淆步骤中保留行号。
Your processed code and stack trace doesn't contain line numbers, so ProGuard can't tell to which original method name the obfuscated method name 'a' corresponds. It then prints out all possible alternatives. Cfr. ProGuard's Retrace manual.
The manual also documents how you can preserve line numbers in the obfuscation step.