我在谷歌商店有一个应用程序,我收到堆栈跟踪崩溃。 问题是我无法获取崩溃线或文件,因为名称不像java文件中那样
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
at java.util.concurrent.FutureTask.run(FutureTask.java:239)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:841)
Caused by: java.lang.OutOfMemoryError
at android.graphics.Bitmap.nativeCreate(Native Method)
at android.graphics.Bitmap.createBitmap(Bitmap.java:791)
at android.graphics.Bitmap.createBitmap(Bitmap.java:768)
at android.graphics.Bitmap.createBitmap(Bitmap.java:701)
at com.tech.myapp.dt.a(Unknown Source)
at com.tech.myapp.dt.doInBackground(Unknown Source)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
这里的问题是文件的名称为
at com.tech.myapp.dt.a(Unknown Source)
at com.tech.myapp.dt.doInBackground(Unknown Source)
如何检测行和哪个文件?
答案 0 :(得分:1)
您似乎正在使用Proguard来混淆代码,因此要解码堆栈跟踪,您需要mapping.txt
文件,并通过查看文件中的映射或使用retrace
工具。有关如何使用retrace
的信息,请参阅这些instructions。
基本上,您需要在Windows平台上执行以下操作:
retrace.bat [-verbose] mapping.txt [<stacktrace_file>]
或在Unix风格的平台上:
retrace.sh [-verbose] mapping.txt [<stacktrace_file>]
但是,正如您正在查看OutOfMemoryError
问题的真正原因可能在其他地方(例如,如果您在其他地方泄漏内存,则可能是您的Bitmap
创建不是&#39这真的是问题),你只是在创建Bitmap
时看到了问题,所以你可能需要更一般地查看你的内存使用情况和/或寻找内存泄漏。