Methods for improving operation of a user device running an application. The methods include collecting a first set of data corresponding to a run time environment of the application, collecting a second set of data corresponding to a crash of the application, identifying a cause of the crash based on the first set of data and a second set of data and determining the cause of the crash is associated with an application feature corresponding to a feature flag.
BACKGROUND INFORMATION (1) An application running on a user device may crash for any of a plurality of different reasons. Under conventional circumstances, the cause of the crash may not be fixed until an update is provided to the user device. However, the process of notifying a developer that the crash has occurred, determining the cause of the crash, generating the update and providing the update to the user device takes time. The longer this process takes, the longer the user is without a properly functioning application. (2) Various negative consequences may arise while the cause of the crash remains unresolved. For example, the application's ability to generate revenue may be limited, the application's reputation may be negatively impacted, the user may be unable to access services the user expects to be available, the user may turn to a competitor's application, etc. Thus, both the entity that distributes the application and the user want the application to resume operating without crashing as quickly as possible. Accordingly, there is a need for a mechanism that is able to quickly mitigate the cause of the crash.
1. A method, comprising: collecting a first set of data corresponding to a run time environment of an application running on a user device; collecting a second set of data corresponding to a crash of the application; identifying a portion of machine code for the application, comprising at least one of: (i) identifying a cause of the crash based on the first set of data and the second set of data, determining the cause of the crash is associated with an application feature corresponding to a feature flag, and identifying the portion of machine code based on the application feature; or (ii) determining that the cause of the crash is indeterminate, and identifying the portion of machine code based on the first set of data; and altering execution of the identified portion of machine code for the application. ||
9. A user device comprising: a volatile memory; and a processor configured to execute an application, wherein the application includes an application feature corresponding to a feature flag, the application configured to perform operations, comprising: collecting a first set of data corresponding to a run time environment of the application running on the user device; collecting a second set of data corresponding to a crash of the application; identifying a portion of machine code for the application, comprising at least one of: (i) identifying a cause of the crash based on the first set of data and the second set of data, determining the cause of the crash is associated with the application feature, and identifying the portion of machine code based on the application feature; or (ii) determining that the cause of the crash is indeterminate, and identifying the portion of machine code based on the first set of data; and altering execution of the identified portion of machine code for the application. ||
14. A method, comprising: collecting a first set of data corresponding to a run time environment of an application running on a user device, wherein the application includes a plurality of application features, each of the plurality of application features corresponding to a respective feature flag; collecting a second set of data corresponding to a first crash of the application; identifying a portion of machine code for the application, comprising at least one of: (i) identifying a cause of the first crash based on the first set of data and the second set of data, determining that the cause of the first crash of the application is associated with only a single application feature, and identifying the portion of machine code associated with the single application feature; or (ii) determining that the cause of the first crash is indeterminate, and identifying the portion of machine code based on the first set of data; and altering execution of the identified portion of machine code for the application.