I'm building a game in Unity for iOS and Android, and we're working with an external QA team to test the game. One recurring issue on Android is that a tester will report a crash, and provide an ADB log of the issue, but the log itself contains very little useful data. Sometimes, the only log output corresponding to the crash will be something like "Process x.y.z has died."
So, I started looking into Android Developer documentation and searching around online for the most effective ways to investigate Android crashes. It seems like I should be able to find a crash dump somewhere, or do some instrumentation to provide more helpful information about the crash. I'm basically trying to find clues as to why a crash occurred. But I'm surprisingly finding no documentation or tutorials on the subject!
Can anyone point me in the right direction on this? Is there a documentation page I've missed, or a detailed tutorial on the subject? Is there some file beyond the ADB logs I should request from the tester? Am I lacking some vital app instrumentation that would report crash information in an online dashboard?
bugreport command creates a report that contains device logs, stack traces, and other diagnostic information to help you find and fix bugs in your app. You can capture a bug report from your device using
$ adb bugreport
You can find more information about this command at Capture and Read Bug Reports
Related
I am trying to understand Bug Reporting in Android
I successfully Captured the bug reports as mention in Android Docs from my Android device
But don't know how to understand these files, log messages and identify & fix bugs in my App
The documentation also did not go into much detail about it.
Can anyone tell how to understand, identify & fix bugs from Bug Reporting UnZipped Documents or
link any useful Documentation that states the main files in Documents
I have some androids phones that have recently started crashing. Is there a way to help narrow down this crash information I retrieved from the Google Play Console?
Thanks for any direction!
enter image description here
If you have access to the devices/users, a device crash report would help to troubleshoot the issue further:
$ adb bugreport E:\Reports\MyBugReports
From the stack trace you provided, it looks similar to the issue described here, caused by a third-party library. In your case, it can be either your code or any third-party library which can cause the crash. I would recommend trying to identify which code created Spannable in your app and isolate/remove/replace it.
I hope title itself says what my question is.
My app is crashing at very rare scenarios like nearly 1 out of 100 times.
I am not using any crash log tools and not logging exception causes.
I want to know does Android system maintains any crash log report when the app is crashed either in System level or in App level.
Thanks
Android system maintains a crash report and sends to the developer but the user has to allow this.
And then you can check it here in Android Developer Console:
As an alternative you can use third-party loggers like Liquid, Crashlytics (mention in another answer), Splunk MINT Express (ex-Bugsense) or any other from this links
I don't think so, if you can't debug it in real time with the IDE (DDMS and LogCat), you must use Crashlytics or any other similar tool.
I use it in all my apps, it is very useful.
Occasionally users of our Android app is run into an obscure problem in the Google infrastructure that Google is trying to track down. And naturally the Engineer working on it wants to see some bugreport output when this happens. Which brings us down to the old problem of how do I get a non-techie end user to generated and send in a bugreport. Installing the SDK, configuring for a Windows system so that can do an
adb bugreport
doesn't sound feasible.
I've been looking around for a simple app that will do this, with no success. So I tried adding that capability to my own app. And this is where I need help. If I use the shell command to access my device, I can generate reports with something simple as
sh -c 'bugreport | gzip > bugreport.gz'
But if I try to execute this from my app, bugreport just displays an error message
Failed to connect to dumpstate service
I'm guessing that I am missing some odd permission, but have no idea what it might be.
Anyone have any ideas what I can try?
If I am not wrong, you want to see the error log when the application is crashed. For this you can integrate ACRA library with the code. This can generate the runtime uncaught errors and that can be sent to email or specific server.
The "shell" user has permission to do things that apps don't, so you can't simply run bugreport from an app.
On Android 4.2 and later you can take a bug report from the Developer Options menu. The menu can be enabled by going into Settings, selecting About Phone, and tapping on Build Number seven times. (This is documented here, under On-device Developer Options.)
The generated bug report can be sent through e-mail (watch for a notification to appear). In some circumstances it's less useful than "adb bugreport" would be, since you have to switch to Settings to generate the report, but it will have the full logs and other goodies. There's a magic key sequence that will initiate bugreports, but I don't know if there's a way to enable it on non-dev devices.
Android now has the ability to capture a bug report at will. To quote from an android issue comment by a project member:
First enable bug report shortcuts:
navigate to developer settings, ensure ‘USB debugging’ is enabled, then enable ‘Bug report shortcut’.
When you have run across a bug:
To take bug report, hold the power button and select the ‘Take bug report’ option.
That will generate a zip archive and offer to share it, e.g. via email, upload to Google drive or whatever. But note that the bugreport zip file contains a bunch of information that may be considered private, so users should only share it with folks they trust to use it appropriately. And of course also note that the developer of an app probably already can access some or all of that information. The ChkBugReport tool gives insights into what is reported. But I haven't seen a good security/privacy writeup (or really any official documentation on all this) so I advise appropriate caution.
I have an App available in the Android Market.
From time to time i get error reports in the Developer Console. For about 6 month there have been no more stack-traces visible. At first I though no more post-froyo bugs: 'yay'!
Recently I did some testing using a droid 2 which I am sure is not pre-froyo, I ran into an error, reported it, and never received this report in the Console.
Did I miss some configuration or option that enables me to receive stacktraces?
Is there something I can do about it?
I have no idea why you don't receive stack traces anymore nor how could you enable them. I have always felt Android Market is a somewhat unreliable service: reports are not accurate, downloads/active counts randomly change at times, crash reports not received, and so on.
However, I have suggestions how to implement similar functionality yourself and with a more reliable fashion: How do I obtain crash-data from my Android application?
Basically there are two options:
Use an existing component (like acra)
DIY by catching all uncaught exceptions.
(So you would have an option should you fail to receive a real solution)
I'd suggest you to stop listening to android market and work with other tools.
You should consider using a crash report tool like http://www.bugsense.com/ which is simple effective and meaningful
NOTE: i am not linked nor affiliated in any way with bugsense owners. I am just a simple user.