Note: This article was written in 2016.
There are many crash reporting tools -
Sentry etc. None are able to capture and track low memory crash events on iOS. Have you ever wondered why? This article will explain you this.
How crash reporting tools work
Crash reporting tools look into one special folder in application’s directory.
This folder contains the crash reports generated by iOS when app crashes. Usually, the crash reporting tools monitor this folder. If a change is detected, the newly generated crash report is analyzed. In most of the cases, it’s sent to a back-end and symbolicated there. Later, the developer can get information about code responsible for making the app crash by looking at the crash log in the dashboard.
Let’s consider a slightly different scenario. Let’s say the app crashed. The reason was low memory warning (low memory crash). In this case, no file gets created in that directory. Later, we can view the low memory crash reports in
Organizer (their type is
Unknown). However, they are not created in the above folder.
Low memory crash event
To understand this we need to define what a
Low Memory crash event is.
Low memory crash events are actually kills by the iOS watchdog process. Whenever you kill a process, there is no crash happening. The crash reports for low memory crash incidents that we can see in Organizer are in fact not crash logs. They are arbitrary reports written by the watchdog process that did the kill. So the only system that can provide information about these, is iOS itself. No external tool can help in this case.
What can we do
Most of the crash reporting tools makers claim to be actively working on a solution that will allow tracking of the low memory incidents. In my opinion, these are just empty words. There is not much they can do in that matter. It is Apple that has to change the way the low memory crash events are handled in iOS. Otherwise, we cannot really investigate them.