Providing application error data for use by third-party library development systems
The application server system processes application error data to attribute errors to third-party libraries, facilitating library developers' identification and rectification of coding faults, thereby reducing application errors and crashes.
Patent Information
- Application Number
- JP2025017561
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2025-02-05
- Publication Date
- 2026-01-06
- Estimated Expiration
- 2040-11-09
AI Technical Summary
Existing application error data is not effectively shared with third-party library developers, hindering their ability to identify and address coding faults in libraries that cause application errors or crashes.
An application server system processes application error data to attribute errors to specific third-party libraries and generates library error data, which is then sent to library development systems for analysis and improvement.
Enables third-party library developers to identify and rectify issues in their libraries, reducing application errors and crashes by providing targeted error data analysis.
Smart Images

Figure 0007795018000001 
Figure 0007795018000002 
Figure 0007795018000003
Abstract
Description
[Background technology]
[0001] background Existing computing devices, including mobile computing devices, are configured to run any number of different applications (e.g., mobile applications, games) over time. Developers of various different applications may use one or more application development systems to develop and distribute these applications, which may then be executed by client computing devices associated with end users. Often, one or more centralized application servers may store these applications and corresponding metadata after they are developed, and end users may download and use these applications on their respective client computing devices. Unfortunately, in some situations, any given application may experience errors during its execution, and in some cases, may even crash or abort execution based on the severity or type of error that occurs. Summary of the Invention [Means for solving the problem]
[0002] overview The present disclosure is directed to providing one or more portions of application error data for use by a third-party library development system developing third-party libraries used by one or more applications based on one or more errors that occur during execution of those applications. According to the techniques of the present disclosure, an application server system may be configured to process application error data associated with such errors that occur during execution of at least one application on one or more client computing devices and output at least a portion of such data included in library error data to the third-party library development system. In such a manner, library developers of one or more third-party libraries may receive and review such library error data, which may be relevant to the execution of corresponding library-dependent code included in or used by the application during execution. By reviewing and analyzing the library error data, the third-party library developer and / or the third-party library development system may attempt to identify any coding faults or other issues in the third-party libraries that may have caused runtime errors during application execution.
[0003] In one example, a method includes an application server system including one or more processors receiving, from one or more client computing devices, application error data associated with at least one error that occurred during execution of at least one application on the one or more client computing devices; and the application server system receiving mapping data providing a mapping between (i) library-dependent source code of the at least one application and (ii) at least one third-party library, where the library-dependent source code is loaded from the at least one third-party library during execution of the at least one application. The method further includes the application server system determining a match between the library-dependent source code and at least one portion of the application error data based on the application error data and the mapping data. The exemplary method further includes, in response to determining the match, The method includes the system attributing at least one error that occurs during execution of the at least one application to at least one third-party library, and the application server system generating library error data associated with the at least one third-party library, the library error data including at least a portion of the application error data, and the method further includes the application server system sending the library error data to at least one third-party library development system that develops the at least one third-party library.
[0004] In another example, an application server system includes at least one processor and at least one computer-readable storage device configured to store instructions executable by the at least one processor to receive, from one or more client computing devices, application error data associated with at least one error that occurred during execution of at least one application on the one or more client computing devices; and receive mapping data providing a mapping between (i) library-dependent source code of the at least one application and (ii) at least one third-party library, the library-dependent source code being loaded from the at least one third-party library during execution of the at least one application. The instructions are further executable by the at least one processor to determine a match between the library-dependent source code and at least one portion of the application error data based on the application error data and the mapping data, and in response to determining the match, attribute at least one error that occurred during execution of the at least one application to at least one third-party library and generate library error data associated with the at least one third-party library, the library error data including at least one portion of the application error data, and the instructions are further executable by the at least one processor to send the library error data to at least one third-party library development system that develops the at least one third-party library.
[0005] In another example, a computer-readable storage device stores instructions that, when executed, cause at least one processor to perform operations. These example operations include receiving, from one or more client computing devices, application error data associated with at least one error that occurred during execution of at least one application on the one or more client computing devices, and receiving mapping data providing a mapping between (i) library-dependent source code of the at least one application and (ii) at least one third-party library, where the library-dependent source code is loaded from the at least one third-party library during execution of the at least one application. The example operations further include determining a match between the library-dependent source code and at least one portion of the application error data based on the application error data and the mapping data. The example operations further include attributing the at least one error that occurred during execution of the at least one application to the at least one third-party library in response to determining the match and generating library error data associated with the at least one third-party library, where the library error data includes at least one portion of the application error data. The example operations further include transmitting the library error data to at least one third-party library development system that develops the at least one third-party library.
[0006] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the disclosure will be apparent from the description and drawings, and from the claims. [Brief explanation of the drawings]
[0007] [Figure 1]FIG. 1 is a block diagram illustrating an example distributed system including an application server system configured to process application error data for use by a third-party library development system, in accordance with one or more aspects of the present disclosure. [Figure 2] FIG. 10 is a block diagram illustrating another example distributed system including an application server system configured to process application crash report data for use by a third-party software development kit (SDK) development system in accordance with one or more aspects of the present disclosure. [Figure 3] FIG. 1 is a block diagram illustrating an example application server system in accordance with one or more aspects of the present disclosure. [Figure 4] FIG. 1 is a conceptual diagram illustrating example stack trace data including both library-dependent source code and application-dependent source code in accordance with one or more aspects of the present disclosure. [Figure 5] FIG. 1 is a conceptual diagram illustrating example mapping data that provides a mapping between one or more portions of an application's library-dependent source code and at least one third-party library into which the library-dependent source code is loaded during execution of the application, in accordance with one or more aspects of the present disclosure. [Figure 6] FIG. 1 is a conceptual diagram illustrating example stack trace data included in an SDK crash report provided to one or more SDK development systems in accordance with one or more aspects of the present disclosure. [Figure 7] FIG. 10 is a conceptual diagram illustrating another example of stack trace data included in an SDK crash report provided to one or more SDK development systems in accordance with one or more aspects of the present disclosure. [Figure 8] FIG. 10 is a conceptual diagram illustrating further examples of stack trace data included in SDK crash reports provided to one or more SDK development systems in accordance with one or more aspects of the present disclosure. [Figure 9]10A-10C are screen diagrams illustrating exemplary graphical user interfaces that may be displayed in one or more third party library development systems based on data provided by an application server system in accordance with one or more aspects of the present disclosure. [Figure 10] FIG. 10 is a screen diagram illustrating another example graphical user interface that may be displayed in one or more third party library development systems based on data provided by an application server system in accordance with one or more aspects of the present disclosure. [Figure 11] 1 is a flow diagram illustrating an example operation of an application server system in accordance with one or more aspects of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION
[0008] Detailed Description 1 is a block diagram illustrating an example distributed system 100 including an application server system 102 configured to process application error data for use by one or more third-party library development systems 132 in accordance with one or more aspects of the present disclosure. In the example of FIG. 1, system 100 includes application server system 102, one or more application development systems 128, one or more third-party library development systems 132, and one or more client computing devices 140. Application server system 102, application development systems 128, third-party library development systems 132, and client computing devices 140 may be communicatively coupled to each other via one or more networks 126, which may include one or more wireless and / or wired networks.
[0009] The application server system 102, the application development system 128, and The application server system 102, the application development system 128, the third-party library development system 132, and the client computing devices 140 may each include one or more computing devices or servers, each of which includes one or more processors. The client computing devices 140 may also include one or more processors. Examples of client computing devices 140 include, but are not limited to, mobile phones, tablet computers, personal digital assistants (PDAs), laptop computers, portable gaming devices, portable media players, wearable computing devices (e.g., watches, wrist-worn computing devices, head-worn computing devices), television platforms, or other types of computing devices. The application server system 102, the application development system 128, the third-party library development system 132, and the client computing devices 140 may each include one or more communication units (as shown in FIG. 3). These communication units may transmit and / or receive data from one or more other computing devices or systems. In some examples, the communication units support wireless and / or wired communication and may transmit and / or receive data using any of a variety of communication protocols.
[0010] As mentioned above, client computing device 140 is configured to execute any number of one or more applications 104 (e.g., mobile applications, games) over time. Various different application developers may use application development system 128 to develop and distribute such applications 104, which may then be executed by client computing device 140. Often, as shown in FIG. 1, application development system 128 may store a local copy of application 104 and may also distribute a copy of application 104 for storage on application server system 102. End users of client computing device 140 may then download and execute applications 104 on client computing device 140, which may have been developed by any number of different application developers using application development system 128. The applications 104 may perform various functions or access one or more services for client computing device 140. Email applications, camera applications, calendar applications, messaging applications, social media applications, travel applications, games applications, stock applications, and weather applications are all examples of applications 104 .
[0011] In some situations, one or more of the applications 104 may experience an error during execution on the client computing device 140 and, in some cases, may even crash or abort execution based on the severity or type of error that occurs. In these situations, when an application has an error or crash during execution on one or more of the client computing devices, the runtime system of the client computing device 140 may generate an error report that is sent to one or more of the application server system 102 and / or application development system 128 associated with the application. In such aspects, the application developer of the application may receive and review these error reports via the application development system 128 in an attempt to identify any coding faults or other problems in the application that may have caused the runtime error on the client computing device 140.
[0012] In many cases, the application 104 includes application-dependent source code and libraries. The source code of an application 104 includes both library-dependent source code and source code that is not library-dependent. Application-dependent source code is typically source code developed specifically for the application 104 (e.g., by an application developer using the application development system 128). Library-dependent source code is typically library-based code developed (e.g., by a library developer using the third-party library development system 132) for incorporation into a third-party library 138 that may be incorporated into or otherwise used by various different ones of the applications 104. As a result, a large percentage of the source code of an application 104 may actually include library-dependent source code. Thus, source code that causes an application 104 to experience errors and crashes during execution may potentially include one or more portions of library-dependent source code included within the application 104.
[0013] Faults present in such library-dependent source code may cause any of the applications 104 that include such code to experience errors or even crashes. Traditionally, as described above, application error data 122 associated with errors in or crashes of applications 104 has been provided only to the application development systems 128 in which those applications 104 were developed. However, this application error data 122 has not traditionally been provided to third-party library development systems 132 so that library developers could have access to such application error data 122 and assess whether any of the third-party libraries 138 developed by the library developers may be the cause of the application error or crash.
[0014] Thus, in accordance with the techniques of this disclosure, application server system 102 may be configured to process application error data 122 associated with errors occurring during one or more executions of applications 104 on one or more of client computing devices 140 and output at least a portion of such data included in library error data 124 to third-party library developers using third-party library development system 132. In this manner, library developers of one or more third-party libraries 138 may receive and review such library error data 124, which may be relevant to the execution of library-dependent code from third-party libraries 138 included in application 104 for execution. By reviewing and analyzing library error data 124, third-party library developers and / or third-party library development system 132 may attempt to identify any coding faults or other issues in third-party libraries 138 that may have caused runtime errors during execution of application 104 on client computing device 140.
[0015] As shown in FIG. 1 and described in further detail below, application server system 102 includes various functional modules. These include library error data generator 110, application error processing module 120, and library error reporting module 121. Library error data generator 110 includes library attribution module 114, scrubbing module 116, clustering module 118, and optional de-obfuscation module 112. These modules may individually or collectively perform the operations described herein using any combination of software, hardware, and / or firmware resident and / or executing on application server system 102. Application server system 102 may execute these modules using one or more processors. In some cases, application server system 102 may execute these modules as one or more virtual machines running on underlying hardware. In some cases, one or more of these may be managed by an operating system. The system may also run as a service on a computing platform.
[0016] As described in further detail below, application error processing module 120 of application server system 102 may receive, from application error reporting module 142 of client computing device 140, application error data 122 associated with at least one error that occurred during execution of one or more applications 104 on client computing device 140. Accordingly, application error reporting module 142 is configured to transmit such application error data 122 associated with the execution of application 104 to application error processing module 120 of application server system 102.
[0017] If one or more of the applications 104 experience a crash or other unexpected termination, the application error data 122 may include application crash report data associated with at least one error that crashed one or more of the applications 104. The application crash report data may include stack trace data representing nested function calls of the application 104, where at least one portion of the application crash report data includes at least one portion of the stack trace data. The nested function calls of the stack trace data are, for example, calls from a program loader that may have led to where the crash occurred during the respective execution of one or more of the applications 104. Figure 4 shows an example of such stack trace data.
[0018] The application server system 102 also receives (e.g., from the application development system 128) mapping data 108 that provides a mapping between (i) the library-dependent source code of the application 104 and (ii) at least one third-party library of the third-party libraries 138 into which the library-dependent source code is loaded during execution of the application 104. In some cases, the application development system 128 may provide the application data 106 to the application server system 102, and the application data 106 may include metadata associated with the application 104. For example, the application data 106 may include the mapping data 108. The application data 106 may also include other information associated with the application 104, such as application version number information, information associated with supported operating systems of the application 104 (e.g., version numbers of one or more operating systems), information associated with supported device types of client computing devices, de-obfuscation data or files associated with the code of the application 104, etc.
[0019] The application server system 102 determines a match between the library-dependent source code and at least one portion of the application error data 122 based on the application error data 122 and the mapping data 108. For example, the library attribution module 114 of the library error data generator 110 on the application server system 102 may determine the match. If the application error data 122 provided by the application error reporting module 142 includes stack trace data, the library attribution module 114 may be configured to determine the match by matching one or more patterns of the library-dependent source code with one or more code locations in the at least one portion of the stack trace data based on the stack trace data and the mapping data 108. As a result, the library attribution module 114 may determine a match between the code in the application 104 and the first time the code is loaded. The library attribution module 114 may identify a mapping between the stack trace and any of the third-party libraries 138. This mapping provides a mechanism for the library attribution module 114 to determine whether a stack trace traverses any third-party library-dependent source code, and the library attribution module 114 may attribute one or more errors (e.g., an application crash) to the identified ones of the third-party libraries 138.
[0020] In response to determining a match, library attribution module 114 may attribute at least one error that occurred during execution of application 104 to at least one third-party library included in third-party libraries 138. Library attribution module 114 may then generate library error data 124 associated with the at least one third-party library, where library error data 124 includes at least a portion of application error data 122. For example, if application error data 122 includes application crash report data, library error data 124 may include library crash report data that includes at least a portion of the application crash report data.
[0021] After the library attribution module 114 generates the library error data 124, the library error reporting module 121 of the application server system 102 transmits the library error data 124 via the network 126 to one or more third-party library development systems 132 that develop at least one third-party library. The at least one third-party library is included in a third-party library 138. For example, the library error reporting module 121 may transmit the library error data 124 to one or more library console interfaces 134 of or associated with the third-party library development systems 132. The library console interfaces 134 may, in some examples, store the library error data 124 locally on the third-party library development systems 132. The library console interfaces 134 may also output the library error data 124 for display on one or more display devices 130, as shown in the examples of FIGS. 9-10 . The display device 130 may, in some examples, include one or more of a liquid crystal display (LCD), a dot matrix display, a light emitting diode (LED) display, an organic light emitting diode (OLED) display, a micro light emitting diode (microLED) display, an active matrix organic light emitting diode (AMOLED) display, e-ink, or similar monochrome or color display capable of outputting visible information to a third party developer using the third party library development system 132.
[0022] In some examples, library error reporting module 121 may include or provide an application programming interface (API) that is called by library console interface 134 to output library error data 124 for display on display device 130. Application server system 102 may be configured to send library error data 124 to third-party library development system 132 via library error reporting module 121. Third-party library development system 132 may execute library console interface 134 to provide a graphical user interface (e.g., in a browser) that may output library error data 124 for display to one or more developers using display device 130. Library console interface 134 may, in some cases, include executable code that is provided by application server system 102 to third-party library development system 132 for execution.
[0023] In some cases, the third-party library development system 132 may also store library data 136, which may include metadata associated with the third-party library 138. 2, library data 136 may include de-obfuscation data usable by optional de-obfuscation module 112 of application server system 102 to de-obfuscate one or more portions of application error data 122 (e.g., stack trace data) received from client computing device 140, and the de-obfuscated portions are then used by library error data generator 110 to generate library error data 124. This de-obfuscation data is associated with library-dependent source code of application 104. In some cases, application data 106 provided to application server system 102 by application development system 128 may also include de-obfuscation data usable by de-obfuscation module 112 to de-obfuscate one or more portions of application error data 122, and such de-obfuscation data is associated with application-dependent source code of application 104.
[0024] In many cases, the application error data 122 (e.g., stack trace data) provided by the application error reporting module 142 may include application-specific data for the application 104 and / or sensitive internal data associated with the application 104. In addition, the application error data 122 may have variability associated with execution errors of different ones of the applications 104 because different applications may utilize potentially faulty library-dependent source code in different contexts. Furthermore, the application error data 122 may, in some cases, include library-dependent source code instructions for different ones of the third-party libraries. As a result, in these cases, the library error data generator 110 may decide to remove one or more portions of the application error data 122 when generating the library error data 124 to be provided to the third-party library development system 132.
[0025] For example, scrubbing module 116 of library error data generator 110 may be configured to remove all application-dependent information (e.g., application-dependent source code) from application error data 122 when generating library error data 124. As a result, third-party library development system 132 does not receive any such application-dependent information in library error data 124 for use or display by library console interface 134.
[0026] If application error data 122 includes library-dependent source code for multiple different ones of third party libraries 138 developed by third party library development system 132, scrubbing module 116 may also be configured to remove one or more portions of such library-dependent source code, such as, for example, any library-dependent source code not associated with an identified third party library that library attribution module 114 attributes to the current error, when generating library error data 124. For example, application error data 122 may have at least one portion of data including first library-dependent source code associated with a first one of the third party libraries 138, and application error data 122 may also have at least one portion of data including second library-dependent source code associated with a second one of the third party libraries 138. If the library attribution module 114 attributes at least one error associated with the application error data 122 to a first third-party library, the scrubbing module 116 may include the application error data 122 (e.g., a stack trace) when generating the library error data 124, as shown in FIGS. 7-8. The second library-dependent source code may be removed from the source code.
[0027] 1 , the library error data generator 110 also includes a clustering module 118. As described in further detail below, in various examples, the clustering module 118 may be configured to cluster portions of the application error data 122 (e.g., stack trace data) generated by multiple different ones of the applications 104 that may be developed by the application development system 128. These applications 104 may be developed by different application developers. The clustered portions of the application error data 122 may include, for example, clustered or aggregated groups of different application error reports that have similar features or characteristics. Because the application error reporting modules 142 of the client computing devices 140 are all configured to provide the application error data 122 to the application server system 102, and the application error data 122 is associated with errors that occur during the execution of potentially multiple different applications 104 developed by different application developers, the application server system 102 may be able to aggregate and cluster such data into the library error data 124. As a result, library developers developing third-party libraries 138 may view such aggregated and / or clustered information about the libraries they develop via the library console interface 134.
[0028] For example, if multiple different applications 104 developed by multiple different application developers each include a potentially faulty third-party library included in a third-party library 138 provided by a third-party library development system 132, one or more of these applications 104 may experience similar errors or crashes during execution. As a result, similar application error data 122 may be generated when errors occur in such applications 104, and the clustering module 118 of the application server system 102 may identify similar library-dependent source code in portions of the application error data 122 corresponding to each of the errors occurring during execution of these applications 104. The library attribution module 114 may then generate library error data 124 including clustered error data (e.g., stack trace data) identifying library-dependent source code associated with the potentially faulty third-party library. The library error reporting module 121 may send such library error data 124 to the third-party library development system 132 so that the library developer of this library can view the library error data 124 using the library console interface 134. This library error data 124 may also include additional information that may be useful to a developer, such as the number of different applications that experience errors when using this library, the type of client computing device 140 used while running the application, the operating system of the client computing device 140, and the application or library version number.
[0029] As outlined in more detail below, the scrubbing module 116 may first remove application-dependent and / or other library-dependent source code information from the application error data 122, as described above, and the clustering module 118 may then cluster similar application error data 122 for one or more applications into library error data 124. In some cases, to identify similar features or characteristics of application error data 122 generated for different applications, the clustering module 118 may cluster the errors into library error data 124. Fingerprint identifiers (e.g., hash identifiers) may be generated for portions of application error data 122 generated for different applications 104 where they occur, and these portions of application error data 122 may be stored or included in library error data 124. Clustering module 118 may then cluster application error data 122 as it generates library error data 124 (e.g., in real time, once or more times during the day via batch processing of application error data 122) based on the matching fingerprint identifiers for these portions of application error data 122. For example, using the example outlined above, multiple different applications 104 that include a potentially faulty third-party library may each be associated with portions of application error data 122 that include or identify similar portions of library-dependent source code for this library. Clustering module 118 may generate similar or matching fingerprint identifiers for these portions of application error data 122, and the fingerprint identifiers may identify or be associated with this portion of library-dependent source code. Clustering module 118 may then include this portion of application error data 122 that contains or matches the library-dependent source code in library error data 124. Library error data 124 may also include information indicating the number of applications that contain this code and experienced the error.
[0030] For example, clustering module 118 may determine a first fingerprint identifier associated with at least one portion of application error data included in library error data 124. This at least one portion may include library-dependent source code. Clustering module 118 may also determine a match between the first fingerprint identifier and a second fingerprint identifier associated with previously generated library error data included in library error data 124, where the previously generated library error data is associated with at least one third-party library. This previously generated library error data also includes at least one portion of application error data (e.g., the same or similar library-dependent source code) associated with at least one error that occurred during one or more executions of applications 104 on client computing device 140. In response to determining a match, clustering module 118 may cluster the library error data with the previously generated library error data to generate clustered library error data in library error data 124, where the clustered library error data is associated with at least one third-party library. In some cases, as described in more detail below, the clustered library error data indicates at least some applications affected by at least one error. The library error reporting module 121 may then send the clustered library error data to the third-party library development system 132.
[0031] In some cases, the clustering module 118 may perform one or more application anonymization functions regarding the applications and application developers of the application development system 128. For example, when including library error information associated with one or more of the applications 104 in the library error data 124, the clustering module 118 may refrain from including any specific or identifying information regarding the applications 104 associated with the library error data 124. Instead, the clustering module 118 may include only generic information regarding such applications 104, such as the number of applications in general. In some cases, the clustering module 118 may perform one or more application anonymization functions regarding the applications and application developers of the application development system 128 when the application is identified by the client computing device 140 (e.g., by the application error reporting module 142). Depending on the type and detail of information included in the application error data 122 provided to the application server system 102, the information may include additional information such as the type of application, one or more version numbers of one or more third-party libraries 138, application information, at least one version number of at least one operating system executed by the client computing device 140, information about the client computing device 140 (e.g., operating system or device type information), etc. Additionally, as described in further detail below, the clustering module 118 may also include in the library error data 124 one or more of the following: the number of applications 104 affected by at least one error over a period of time (e.g., 30 days, 60 days, all cumulative time to date, etc.), the number of users affected by at least one error over that period of time, or the number of occurrences of at least one error over that period of time.
[0032] In some cases, the clustering module 118 may perform one or more application thresholding functions. For example, the clustering module 118 may only include error data affecting more than a threshold number of applications in the library error data 124 to potentially further preserve the anonymity of applications experiencing the errors. In some cases, only errors (e.g., crashes) observed across more than this threshold number of applications may be reported to the third-party library development system 132. These errors may be related to common issues or bugs of particular interest to library developers of one or more third-party libraries associated with the library error data 124. Thus, in one or more examples, the application server system 102 may determine that the number of applications 104 affected by at least one error exceeds a threshold number, and the library error reporting module 121 may be configured to only transmit the clustered library error data 124 in response to determining that the number of applications affected by at least one error exceeds the threshold number. In some cases, this threshold number may be a predetermined or default number of applications.
[0033] According to the techniques disclosed herein, storage of certain data, such as application data 106, library data 136, application error data 122, and / or library error data 124, may occur, in various examples, only in response to a computing device or system (e.g., client computing device 140 and / or systems 102, 128, 132) receiving affirmative consent or response from one or more users, such as one or more application or library developers or end users. Users may be provided with controls that allow them to make selections both about whether and when the systems, programs, or features described herein may enable the collection and / or storage of information and / or whether and when the systems, programs, or features described herein may enable the transmission of content or communications between devices. Additionally, as described above, some data (e.g., library error data 124) may be processed in one or more ways before storage or use such that identifiable information associated with application 104 is removed.
[0034] 2 is a block diagram illustrating another example distributed system 200 including an application server system 202 configured to process application crash report data 222 for use by a third-party software development kit (SDK) development system 232, in accordance with one or more aspects of the present disclosure. System 200 is an example of system 100, in which the various components illustrated in FIG. 2 provide similar functionality as like-numbered components illustrated in FIG. 1.
[0035] For example, system 200 includes one or more application server systems 202 communicatively coupled to one or more application development systems 228, one or more SDK development systems 232, and one or more client computing devices 240 via one or more networks 226. Application server system 202 is an example of application server system 102 shown in FIG. 1 ; network 226 is an example of network 126; application development system 228 is an example of application development system 128; SDK development system 232 is an example of third-party library development system 132; and client computing device 240 is an example of client computing device 140.
[0036] FIG. 2 illustrates an example in which a third-party library includes an SDK 238 developed by a third-party SDK developer using an SDK development system 232. In various examples, an SDK includes a collection of software development tools or components provided in an installable library. As shown in FIG. 2, the SDK development system 232 includes one or more SDKs 238, which may be developed by one or more third-party SDK developers using the SDK development system 232. Various different applications, such as the application 204 developed using the application development system 228, may include one or more of the SDKs 238. Similar to the third-party library development system 132 of FIG. 1, the SDK development system 232 of FIG. 2 includes an SDK 238, SDK data 236, SDK crash report data 224, one or more SDK console interfaces 234, and one or more display devices 230. The SDK crash report data 224 is an example of library error data 124, and one or more of the errors associated with the execution of the application 204 include one or more application crashes. In some cases, SDK data 236 provided by SDK development system 232 to application server system 202 may include de-obfuscation data associated with library-dependent source code of SDK 238, as described above. Application server system 202 may store such data locally in de-obfuscation data 209. De-obfuscation module 212 of SDK crash report generator 210 may use such de-obfuscation data 209 to de-obfuscate one or more portions of application crash report data 222 (e.g., library-dependent source code) in order for SDK crash report generator 210 to generate SDK crash report data 224.
[0037] 2 includes applications 204 and corresponding application data 206, including mapping data 208. One or more application developers may create applications 204 using application development system 228. In some cases, application data 206 provided by application development system 228 to application server system 202 may also include de-obfuscated data associated with application-dependent source code of applications 204. Application server system 202 may store such data locally in de-obfuscated data 209.
[0038] 1, the client computing device 240 of FIG. 2 includes applications 204. One or more of the applications 204 may crash or otherwise terminate execution, and the application crash report data 222 may include data associated with these crashes. The application crash report data 222 is an example of the application error data 122 shown in FIG. 1. One or more application crash reporting modules 242 may report the application crash reports. The port data 222 is configured to be sent to the application server system 202 .
[0039] Application server system 202 includes application 204 and corresponding application data 206. Application data 206 includes mapping data 208 and optional de-obfuscation data 209. Application server system 202 also includes SDK crash report generator 210, application error processing module 220, SDK crash reporting module 221, application crash report data 222, and SDK crash report data 224 (which are examples of library error data generator 110, application error processing module 120, library error reporting module 121, application error data 122, and library error data 124, respectively).
[0040] Similar to library error data generator 110, SDK crash report generator 210 includes SDK attribution module 214, scrubbing module 216, clustering module 218, and optional de-obfuscation module 212. SDK crash report generator 210 is configured to generate SDK crash report data 224 based on application crash report data 222 sent by application crash reporting module 242 and processed by application error processing module 220 of application server system 202. Application crash report data 222 may include stack trace data 223 provided by application crash reporting module 242, and SDK crash report data 224 generated by SDK crash report generator 210 may also include stack trace data 225. Stack trace data 225 may include one or more portions of stack trace data 223, as described above with reference to library error data 124 and application error data 122 of FIG. 1 . The SDK crash reporting module 221 of the application server system 202 may send the SDK crash report data 224 to the SDK development system 232, which may then display one or more portions of this display on the display device 230.
[0041] 3 is a block diagram illustrating an example application server system 302 in accordance with one or more aspects of the present disclosure. Application server system 302 may be an example of application server system 102 (FIG. 1) and / or application server system 202 (FIG. 2). FIG. 3 shows only one particular example of application server system 302, and many other examples of application server system 302 may be used in other examples. In various cases, application server system 302 may include a subset of the components shown in FIG. 3 or may include additional components not shown in FIG. 3.
[0042] 3, application server system 302 includes a display device 348, one or more processors 344, one or more input components 346, one or more communication units 350, one or more output components 354, and one or more storage devices 358. A communication channel 347 may interconnect (physically, communicatively, and / or operatively) each of components 344, 346, 348, 350, 354, and / or 358 for inter-component communication. In some examples, communication channel 347 may include a system bus, a network connection, an inter-process communication data structure, or any other method for communicating data between hardware and / or software.
[0043] One or more input components 346 of the application server system 302 may receive input, such as input from a user. Examples of input include touch / haptic, presence sensing, and sound. Examples of input component 346 include a presence-sensitive screen, a touch-sensitive screen, a touch screen, a mouse, a keyboard, a trackpad, a voice response system, a video camera, a microphone, or any other type of device for detecting input from a human or machine.
[0044] One or more output components 354 of the application server system 302 may generate output. Examples of output are haptic output, audio output, and visual output. Examples of output components 354 include a presence-sensing screen, a touch-sensitive screen, a touch screen, a sound card, a video graphics adapter card, a speaker, a liquid crystal display (LCD), an organic light-emitting diode (OLED) display, a micro-light-emitting diode (micro-LED) display, an active-matrix organic light-emitting diode (AMOLED) display, a tactile device, or any other type of device for generating output to a human or a machine.
[0045] One or more communication units 350 of the application server system 302 may communicate with external devices over one or more networks by transmitting and / or receiving network signals over one or more networks (e.g., one or more wired and / or wireless networks). For example, the application server system 302 may use the communication unit 350 to transmit and / or receive radio signals over a wireless network, such as a cellular wireless network. Similarly, the communication unit 350 may transmit and / or receive satellite signals over a satellite network, such as a Global Positioning System (GPS) network. Examples of the communication unit 350 include a network interface card (e.g., an Ethernet card, etc.), an optical transceiver, a radio frequency transceiver, a GPS receiver, or any other type of device capable of transmitting and / or receiving information. Other examples of the communication unit 350 may include a shortwave radio, a cellular data radio, a wireless Ethernet network radio, and a universal serial bus (USB) controller.
[0046] In some cases, application server system 302 may include a display device 348. In some examples, display device 348 may provide output to a user using tactile, audio, or visual stimuli, as described above with reference to output component 354. For example, display device 348 may provide a display or video output, as described above with reference to output component 354. Display device 348 may also provide input functionality, as described above with reference to input component 346. In some cases, application server system 302 may not include a display device 348.
[0047] One or more storage devices 358 may store information for processing during operation of the application server system 302. In some examples, the storage devices 358 include temporary memory, meaning that the primary purpose of the storage devices 358 is not long-term storage. The storage devices 358 on the application server system 302 may be configured for short-term storage of information as volatile memory, and therefore do not retain stored content when power is turned off. Examples of volatile memory include random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), and other forms of volatile memory known in the art.
[0048] Storage device 358, in some examples, includes one or more computer-readable storage media. Storage device 358 may be configured to store larger amounts of information than volatile memory. Storage device 358 may also be configured as non-volatile memory space for long-term storage of information and may retain information after power on / off cycles. Examples of non-volatile memory include magnetic hard disks, optical disks, floppy disks, flash memory, or other storage media. or forms of electrically programmable memory (EPROM) or electrically erasable programmable (EEPROM) memory. Storage device 358 may store program instructions and / or data associated with one or more of application 304, application data 306, mapping data 308, library error data generator 310, application error handling module 320, library error reporting module 321, application error data 322, and library error data 324, which may include examples of like-numbered components or modules shown in FIGS. 1-2. Library error data generator 310 includes de-obfuscation module 312, library attribution module 314, scrubbing module 316, and clustering module 318.
[0049] One or more processors 344 may implement functions and / or execute instructions within application server system 302. For example, processor 344 on application server system 302 may receive and execute instructions stored by storage device 358 that perform the functions of application 304, library error data generator 310 (including de-obfuscation module 312, library attribution module 314, scrubbing module 316, and clustering module 318), application error processing module 320, and / or library error reporting module 321. These instructions executed by processor 344 may cause application server system 302 to store information in storage device 358 during program execution.
[0050] 4 is a conceptual diagram illustrating exemplary stack trace data 423 including both library-dependent source code and application-dependent source code in accordance with one or more aspects of the present disclosure. The stack trace data 423 is an example of the stack trace data 223 shown in FIG. 2 that may be included in application crash report data 222 provided by client computing device 240 to application server system 202. The stack trace data 423 is associated with at least one error that occurred during execution of one of applications 204 shown in FIG. 2, for example. For illustrative purposes only, the relevant examples shown in FIGS. 4-8 will be described with reference to system 200 shown in FIG. 2.
[0051] 4, stack trace data 423 includes an error identifier (e.g., an exception identifier) 460 that identifies one or more errors associated with stack trace data 423. Stack trace data 423 also includes multiple code portions: library-dependent source code 461, application-dependent source code 462, and library-dependent source code 463. Stack trace data 423 may represent nested function calls having a calling order 464, which may be, for example, from a program loader to a location where a crash occurred during the respective execution of one or more of the applications (e.g., application 204 shown in FIG. 2). The calling order 464 of the function calls that may have led to a possible crash is from bottom to top in the example of FIG. 4 (e.g., library-dependent source code 463, application-dependent source code 462, library-dependent source code 461).
[0052] In various examples, each line of stack trace data 423 shown in FIG. 4 may be referred to as a frame or code location of the stack trace. In some cases, each frame or code location of the stack trace may indicate information associated with the source code (e.g., library-dependent or application-dependent source code) of that frame of the stack trace. For example, this information may include a library name or identifier. In some examples, the name or identifier may include a package name, namespace name, module name, etc. In some examples, the information about each frame or code location may be stored in a separate The stack trace may include additional information such as one or more of the following: class name, method name, and / or function name, or in any combination. In some cases, each frame or code location in the stack trace may further indicate the file name of the file containing the source code and / or the line number of the source code for that frame.
[0053] The application-dependent source code 462 is associated with code specific to a particular application, for example, one of the applications 204. The library-dependent source code 461 is associated with code specific to, for example, the first SDK (named "examplehttp") of the SDKs 238 shown in FIG. Library-dependent source code 463 may be associated with code from a second SDK named "OS.app" of SDK 238, for example, where "OS" may represent the name of the operating system in this particular example.
[0054] 5 is a conceptual diagram illustrating example mapping data 508 that provides a mapping between one or more portions of an application's library-dependent source code and at least one third-party library into which the library-dependent source code is loaded during execution of the application, in accordance with one or more aspects of the present disclosure. Mapping data 508 may be an example of mapping data 208 shown in FIG. 2 that is included in application data 206 provided by application development system 228 to application server system 202. Use of such mapping data may, in various cases, enable SDK crash report generator 210 to determine whether stack trace data, such as stack trace data 423, traverses any library code of an application within application 204 so that SDK attribution module 214 may attribute the crash to the library corresponding to such code.
[0055] In some cases, application developers and / or application development system 228 may develop or create mapping data 508 associated with each developed application 204 deployed on application server system 202 shown in Figure 2. Application development system 228 may provide such mapping data 508 (which is an example of mapping data 208 shown in Figure 2) to application server system 202 for use by SDK crash report generator 210. In some cases, application server system 202 may obtain one or more portions of mapping data 508 from one or more external sources or repositories (e.g., publicly accessible repositories that provide such information about applications 204).
[0056] 5, mapping data 508 provides a mapping between one or more portions of library-dependent source code of one of applications 204 and at least one third-party library (e.g., SDK) into which the library-dependent source code is loaded during execution of the application. In FIG. 5, a mapping between an identified portion or pattern of library-dependent source code and a first SDK (“examplehttp”) is provided. An exemplary mapping is shown.
[0057] For example, the mapping data 508 maps a first portion or pattern 570 of the application's library-dependent source code to an SDK identifier 571 of this first SDK. As shown in Figure 5, the pattern 570 identifies the library-dependent source code whose package name is "okttp3" and whose class name is "ExampleHttpClient." The "*" wildcard character in 570 specifies the library with this package and class name. The mapping data 508 maps the library-dependent source code pattern 570 to a first SDK having an SDK identifier 571. The SDK identifier 571 is , this first SDK ("examplehttp"), and the SDK identifier 571 is the SDK name and The name and version number ("4.8.1") may also be identified.
[0058] The mapping data 508 also maps a second portion or pattern 572 of library-dependent source code to an SDK identifier 571 of the first SDK. The pattern 572 identifies library-dependent source code having a package name "examplehttp" and a class name "ExampleHttpClient$Builder." The "*" wildcard character in the pattern 572 is , indicates that any function / method in the library-dependent source code with this package and class name will be mapped to SDK identifier 571.
[0059] The mapping data 508 also maps a third portion or pattern 573 of the library-dependent source code to an SDK identifier 571 of the first SDK. The pattern 573 is a platform-dependent source code with a package name of "examplehttp" and a class name of "OSPlatform". Identifies the library dependent source code associated with this package and class name. The "*" wildcard character in pattern 573 identifies the library dependent source code associated with this package and class name. This indicates that any function / method in the source code is mapped to an SDK identifier 571.
[0060] The mapping data 508 also maps a fourth portion or pattern 574 of the library-dependent source code to an SDK identifier 571 of the first SDK. The pattern 574 is a platform class with a package name "examplehttp" and a class name "Platform". Identifies the library dependent source code associated with the code. The "*" wildcard character in pattern 574 identifies the library dependent source code with this package and class name. It shows that any function / method in the code is mapped to an SDK identifier 571. Thus, in the example of FIG. 5, all of the library-dependent source code portions or patterns 570, 571, 572, 573 are mapped to the same first SDK ("examplehttp"). It will be googled.
[0061] Figure 6 is a conceptual diagram illustrating example stack trace data 625 included in an SDK crash report provided to one or more SDK development systems 232 in accordance with one or more aspects of the present disclosure. In various examples, SDK crash report generator 210 (e.g., using SDK attribution module 214) may generate SDK crash report data 224 that includes stack trace data 625 shown in Figure 6. SDK crash reporting module 221 may then transmit this SDK crash report data 224 to SDK development system 232 for output to display device 230.
[0062] In various examples, as described above, SDK attribution module 214 may attribute a crash to one or more SDKs included in SDKs 238. These SDKs may include the library-dependent source code that is responsible for the crash. SDK attribution module 214 may determine a match between the application's library-dependent source code and at least a portion of stack trace data 423 based on stack trace data 423 (FIG. 4) and mapping data (including mapping data 508 shown in FIG. 5). For example, based on mapping data 508 and stack trace data 423, SDK attribution module 214 may attribute a first SDK ("examplehttp") to the library-dependent source code that caused the crash. 5, SDK attribution module 214 may identify the first and second SDKs as another possible cause of the crash. Additionally, based on stack trace data 423 and additional mapping data associated with a second SDK ("OS.app") not shown in FIG. 5, SDK attribution module 214 may identify the second SDK as another possible cause of the crash. Accordingly, SDK attribution module 214 identifies these first and second SDKs as candidate SDKs 678 that may have caused the crash. In some examples, one or more of such candidate SDKs may be Because the first SDK is at the top of the stack trace data 423 shown in FIG. 4, the SDK attribution module 214 may, in some cases, rank the first SDK as the first, or potentially stronger, candidate for being involved in the crash relative to the second SDK.
[0063] To identify these SDK candidates 678, in various examples, the SDK attribution module 214 may analyze the mapping data and attempt to match portions or patterns in such data (e.g., patterns 570, 572, 573, 574 in the mapping data 508) with source code contained in frames or code locations of the stack trace data 423 received from the client computing device 240. Upon finding one or more matches, the SDK attribution module 214 then identifies the third-party library corresponding to the library identifier in the mapping data (e.g., the first SDK "examplehttp" associated with the SDK identifier 571 in the mapping data 508) as the source code for the crash. Libraries may be identified as being potential culprits.
[0064] In one or more specific, non-limiting examples, the SDK attribution module 214 may perform such a process to identify SDK candidates 678 based on the following pseudocode: <library>matched_libraries = {}; for (string code_location in input_stack_trace.code_locations) { for (string library_pattern in mapping.library_patterns) { if (library_pattern.matches(code_location)) { matched_libraries.add(library_pattern.library); } } } In this pseudocode, input_stack_trace corresponds to stack trace data 423. The mapping data 508 may also include input_stack_trace.code_locations, where input_stack_trace.code_locations corresponds to each frame or code location in the stack trace data 423. The mapping.library_patterns in pseudocode may correspond to patterns 570, 572, 573, 575 in the mapping data 508. As described above, the SDK attribution module 214 may analyze the mapping data and attempt to match portions or patterns in such data (e.g., patterns 570, 572, 573, 574 in the mapping data 508) with source code contained in frames or code locations of the stack trace data 423 received from the client computing device 240. Upon finding such a match, the SDK attribution module 214 may add each identified library (e.g., library identifier) to the set matched_libraries. (e.g., SDK candidate 678).
[0065] After performing the matching operation, the SDK crash report generator 210 generates a list of SDK crash reports associated with the first SDK (“examplehttp”) and the second SDK (“OS.app”). 6 may be generated to be included in the report data 224. The stack trace data 625 may include one or more portions of the stack trace data 423. The SDK crash reporting module 221 may send this SDK crash report data 224, including the stack trace data 625, to the SDK development system 232.
[0066] For example, as shown in FIG. 6, stack trace data 625 includes an error identifier 660 and a library dependency associated with a first SDK ("examplehttp") of SDKs 238. The error identifier 660 corresponds to the error identifier 460 of the stack trace data 423 of FIG. 4, and the library-dependent source code 661 corresponds to the library-dependent source code 663 associated with the second SDK (“OS.app”). The library-dependent source code 663 corresponds to the library-dependent source code 463 .
[0067] 6, however, the stack trace data 625 does not include application-dependent source code 462. Instead, the stack trace data 625 includes a generic or uniform placeholder 676. While FIG. 6 shows one or more "-" or "_" characters as placeholders 676, in other examples, any other form of symbol or alphanumeric character (e.g., " <private>") may be used. As mentioned above, in various cases In this regard, the scrubbing module 216 may be configured to remove certain information from the stack trace data 423 when generating library error data, such as the stack trace data 625 shown in FIG.
[0068] For example, after identifying SDK candidates 678, scrubbing module 216 may wipe sensitive or specific information associated with the identity or internal details of the crashed application. Thus, in various cases, scrubbing module 216 may be configured to remove all application-dependent information (e.g., application-dependent source code 462) from stack trace data 423 when generating stack trace data 625 and replace this information with placeholders 676. As a result, SDK development system 232 does not receive any such application-dependent information in SDK crash report data 224 for use or display by SDK console interface 234.
[0069] The SDK crash report generator 210 (e.g., using the SDK attribution module 214 and / or the clustering module 218) may optionally be configured to generate a unique fingerprint identifier (ID) 677, such as a unique hash identifier, associated with the contents of the stack trace data 625. The fingerprint ID 677 may be used to aggregate and / or cluster the stack trace data 625 with other similar stack trace data that may be associated with other application crashes, as described in further detail below. The SDK crash reporting module 221 then aggregates this SDK crash report data 224, including the stack trace data 625, into the first SDK (“examplehttp”) and the second SDK included in the SDK 238. The SDK crash report data 224 may be transmitted to an SDK development system 232 associated with the first and / or second SDK (“OS.app”). SDK developers of these first and / or second SDKs may then review the SDK crash report data 224 using an SDK console interface 234.
[0070] 6 , in which the SDK attribution module 214 identified first and second SDKs as SDK candidates 678, the scrubbing module 216 may generate two separate instances of stack trace data associated with the first and second SDKs. The first stack trace data may include only the library-dependent source code associated with the first SDK, and the second stack trace data may include only the library-dependent source code associated with the second SDK. Both the first and second stack trace data may be stored in the SDK crash report data 224. The SDK crash reporting module 221 may send the portion of the SDK crash report data 224 that includes the first stack trace data to one or more SDK development systems 232 developing a first SDK of the SDKs 238, and the SDK crash reporting module 221 may send the portion of the SDK crash report data 224 that includes the second stack trace data to one or more SDK development systems 232 developing a second SDK. The SDK developers of the first and second SDKs may then review the respective first and second stack trace data associated with the application crash. FIGS. 7-8 provide examples of such first and second stack trace data. By utilizing this approach, the scrubbing module 216 is configured to remove SDK information related to the second SDK when providing the first stack trace data to the developer of the first SDK, and to remove SDK information related to the first SDK when providing the second stack trace data to the developer of the second SDK.
[0071] 7 is a conceptual diagram illustrating another example of stack trace data 725 included in an SDK crash report (e.g., SDK crash report data 224) provided to one or more SDK development systems 232 in accordance with one or more aspects of the present disclosure. If stack trace data 423 of FIG. 4 includes library-dependent source code for multiple different third-party libraries among third-party libraries 238 developed by third-party library development system 232 (FIG. 2), scrubbing module 216 may be configured to remove one or more portions of such library-dependent source code when generating stack trace data 725, such as any library-dependent source code that is not associated with an identified third-party library that library attribution module 214 attributes to the current error.
[0072] Thus, in the example of FIG. 7, the scrubbing module 216 scrubs the application-dependent source code 462 and the first identified SDK (library) candidate “examplehttp.” 7, the stack trace data 725 includes an error identifier 760 and library-dependent source code 761 associated with the first SDK candidate "examplehttp." The stack trace data 725 includes an error identifier 760 and library-dependent source code 761 associated with the first SDK candidate "examplehttp." The stack trace data 725 includes an error identifier 760 and library-dependent source code 761 associated with the first SDK candidate "examplehttp." The stack trace data 725 includes an error identifier 760 and library-dependent source code 761 associated with the first SDK candidate "examplehttp." The stack trace data 725 includes an error identifier 760 and library-dependent source code 761 associated with the second ... second SDK candidate "examplehttp." The stack trace data 725 includes an error identifier 760 and library-dependent source code 761 associated with the first SDK candidate "examplehttp." The stack trace data 725 includes an error identifier 760 and library-dependent source code 761 associated with the second SDK candidate "examplehttp." The stack trace data 725 includes an error identifier 760 and library-dependent source code 761 associated with the first SDK candidate "examplehttp." The stack trace data 725 includes an error identifier 760 and library-dependent source code 761 associated Clustering module 218 may also generate a unique fingerprint identifier 777 for stack trace data 725 that may be used to cluster stack trace data 725 with other similar stack trace data associated with other application crashes, as described in more detail below.
[0073] 8 is a conceptual diagram illustrating another example of stack trace data 825 included in an SDK crash report (e.g., SDK crash report data 224) provided to one or more SDK development systems 232 in accordance with one or more aspects of the present disclosure. If stack trace data 423 of FIG. 4 includes library-dependent source code for multiple different third-party libraries among third-party libraries 238 developed by third-party library development system 232 (FIG. 2), scrubbing module 216 may be configured, when generating stack trace data 825, to remove one or more portions of such library-dependent source code, such as any library-dependent source code that is not associated with an identified third-party library that library attribution module 214 attributes to the current error.
[0074] 8, the scrubbing module 216 removes all frames of stack trace data 423 provided by the client computing device 240 that contain application-dependent source code 462 and any library-dependent source code that is not associated with the second identified SDK (library) candidate “OS.app.” Therefore, the scrubbing module 216 may remove all frames of stack trace data 423 provided by the client computing device 240 that contain application-dependent source code 462 and any library-dependent source code that is not associated with the first identified SDK (library) candidate “ex.app” when generating or updating stack trace data 825. The library dependent source code 463 associated with "amplehttp" is removed. As shown, stack trace data 825 includes error identifier 860 and library-dependent source code 863 associated with second SDK candidate “OS.app.” Clustering module 218 may also generate a unique fingerprint identifier 877 for stack trace data 825, which may be used to cluster stack trace data 825 with other similar stack trace data associated with other application crashes.
[0075] As a result, scrubbing module 216 may generate two separate instances of stack trace data associated with these first and second SDKs. The first stack trace data may include only the library-dependent source code associated with the first SDK, and the second stack trace data may include only the library-dependent source code associated with the second SDK. In one or more specific, non-limiting examples, scrubbing module 216 may perform a process for generating such stack trace data for different candidate SDKs for inclusion in SDK crash report data 224 sent to SDK development system 232 similar to or based on the following pseudocode: list<stack_trace> library_stack_traces = []; for (library in matched_libraries) { library_stack_trace = library_stack_traces.add_new(); last_matched = false; for (code_location in input_stack_trace.code_locations) { if (library.matches(code_location) { last_matched = true; library_stack_trace.append(code_location) } else if (last_matched) { last_matched = false; library_stack_trace.append('_') } } } In this pseudocode, matched_libraries is a list of those SDK candidates 678, i.e. The first SDK ("examplehttp") and the second SDK ("OS.app"). The code is listed in library_stack_trace for the first and second SDKs. For example, the scrubbing module 216 creates first and second instances of library stack trace data 725 (library_stack_trace) and adds it to a list of library_stack_trace that includes library-dependent source code 761 for the first SDK in the stack trace data 725 generated from the input stack trace data 423 (input_stack_trace). The mapping module 216 traverses each frame or code_location of the stack trace data 423 to identify library-dependent source code 461 of the first SDK. If such code is identified, the scrubbing module 216 adds or appends this code as library-dependent source code 761 to the first library stack trace data 725 (library_stack_trace) in the list. For any application-dependent source code (e.g., library-dependent source code 463) or any application-dependent source code (e.g., application-dependent source code 462), the scrubbing module 216 either completely removes this code in the stack trace data 725 as shown in FIG. 7, or replaces such code with one or more uniform placeholders (e.g., "_" characters) (not shown in FIG. 7).
[0076] Similarly, the scrubbing module 216 creates a second library stack trace data 825 (library_stack_trace) and adds it to the input stack trace data 423 Second SDK in stack trace data 825 generated from (input_stack_trace) Add to the list of library_stack_trace, including library dependent source code 863 for The scrubbing module 216 traverses each frame or code_location of the stack trace data 423 to identify library-dependent source code 424 of the first SDK. 63. If such code is identified, the scrubbing module 216 adds or appends this code as library-dependent source code 863 to the first library stack trace data 825 (library_stack_trace) in the list. For library-dependent source code (e.g., library-dependent source code 461) or any application-dependent source code (e.g., application-dependent source code 462), scrubbing module 216 either completely removes this code in stack trace data 825, as shown in FIG. 8, or replaces such code with one or more uniform placeholders (e.g., “_” characters) (not shown in FIG. 8).
[0077] As described above, clustering module 218 may also generate a unique fingerprint identifier 777 for stack trace data 725, which may be used to cluster stack trace data 725 with other similar stack trace data associated with other application crashes. Clustering module 218 may similarly generate a unique fingerprint identifier 877 for stack trace data 825, which may be used to cluster stack trace data 825 with other similar stack trace data associated with other application crashes. Clustering module 218 may store fingerprint identifiers 777 and 877 (e.g., in SDK crash report data 224 or in an associated data store) in various cases.
[0078] Each of the stack trace data 725 and 825 may be processed and clustered into groups of similar data or reports based on the identified fingerprint identifiers 777, 877, respectively. By performing one or more clustering operations using the clustering module 218, the SDK crash report generator 210 may be configured to process the application crash report data 222 associated with any number of different applications 204 developed by any number of different application developers on the application development system 228, and then aggregate and cluster similar errors and crashes that occurred during the execution of these applications 204. The SDK crash reporting module 221 may then output the clustered SDK crash report data 224 associated with particular identified SDKs 238 to the SDK development system 232, where the data may then be displayed on the display device 230 via the SDK console interface 234 for review by respective SDK developers.
[0079] In various cases, to perform such aggregation or clustering, SDK crash report generator 210 and / or SDK crash reporting module 221 may index or group and store current and historical stack trace data in stack trace data 225 of SDK crash report data 224 according to fingerprint identifiers respectively associated with such stack trace data. Thus, as one example, SDK crash report generator 210 may store stack trace data 725 in stack trace data 225. Clustering module 218 may also store in SDK crash report data 224 application stack trace data received from application crash reporting module 242 that are associated with the particular crash that resulted in stack trace data 725. One or more other portions of the crash report data 222 may also be stored. For example, if the application crash report data 222 includes version number information of the operating system used by the application 204, version numbers of any SDKs included in the application 204, the device type of the client computing device 240, etc., the clustering module 218 may store such information in the SDK crash report data 224. In some cases, the clustering module 218 may also obtain the SDK version information from the mapping data 208. All of such information in the SDK crash report data 224 and the stack trace data 225 may be indexed or grouped according to the fingerprint identifier 777. In some cases, the clustering module 218 may also obtain the SDK version information and / or SDK name information from the mapping data 208, which may then be stored in the SDK crash report data 224.
[0080] Similarly, SDK crash report generator 210 may store stack trace data 825 in stack trace data 225. Clustering module 218 may also store in SDK crash report data 224 one or more other portions of application crash report data 222 received from application crash reporting module 242 that are associated with the particular crash that resulted in the generation of both stack trace data 725 and stack trace 825 (e.g., the version number of the operating system used by application 204, the version numbers of any SDKs included in application 204, the device type of client computing device 240, etc.). This information in SDK crash report data 224 and stack trace data 225 may further be indexed or grouped according to fingerprint identifier 877. Additionally, as described in more detail below, the clustering module 218 may also include in the SDK crash report data 224 one or more of the number of applications 204 affected by at least one error over a period of time (e.g., 30 days, 60 days, all cumulative time to date, etc.), the number of users affected by at least one error over that period of time, or the number of occurrences of at least one error over that period of time.
[0081] Over time, the SDK crash report generator 210 may process additional application crash report data 222 associated with additional errors or crashes encountered during the execution of the application 204. These may include one or more of the applications 204 developed by one or more different application developers using the application development system 228. The SDK crash report generator 210 may generate additional stack trace data associated with these errors or crashes. The clustering module 218 may generate corresponding fingerprint identifiers for such stack trace data and compare these fingerprint identifiers with previously generated fingerprint identifiers associated with stack trace data and other data previously stored in the SDK crash report data 224. If there is a fingerprint identifier match, the clustering module 218 may perform one or more clustering operations to aggregate or cluster the current error or crash data with previously collected data; such clustering may indicate similarities between errors or crashes occurring over time in one or more applications 204 that utilize similar ones of the SDK 238. The SDK crash reporting module 221 may then output the SDK crash report data 224 to the SDK development system 232 so that individual SDK developers may view, via the SDK console interface 234, portions of the SDK crash report data 224 that correspond to one or more of the SDKs 238 that they developed and that may be the cause of one or more application errors.
[0082] Based on the clustering operations performed, the clustering module 218 may store various forms of clustering information within the SDK crash report data 234. For example, the clustering module 218 may associate with the clustered data one or more of the following information within the SDK crash report data 234: the number of occurrences of similar errors (e.g., reports, problems, crashes) over a period of time; the number of applications (and / or users of the applications) that experienced similar errors; the name of a library (e.g., an SDK) associated with the error; the library version; the operating system and / or operating system version of the computing device on which the error occurred; and / or the type of client computing device on which the error occurred. Upon receiving such aggregated and / or clustered data within the SDK crash report data 224, the SDK development system 232 may output one or more portions of such data to the display device 230 using the SDK console interface 234, which may be reviewed by the respective SDK developer of the SDK in question. FIGS. 9-10 provide examples of such output.
[0083] As mentioned above, in some cases, the clustering module 218 may perform one or more application anonymization functions with respect to applications and application developers of the application development system 228. For example, when including error information (e.g., clustering information) in the SDK crash report data 224 associated with one or more of the applications 104, the clustering module 218 may refrain from including any specific or identifying information about the applications 204 associated with the SDK crash report data 224. Instead, the clustering module 218 may include only generic information about such applications 204, such as the number of applications in general. In some cases, the clustering module 218 may include additional information, such as the type of application, information about the client computing device 140 (e.g., operating system or device type information), depending on the type and details of information included in the application crash report data 222 provided by the client computing device 240 to the application server system 202 (e.g., by the application error reporting module 242).
[0084] In some cases, the clustering module 218 may perform one or more application thresholding functions, e.g., as a further form of anonymization. For example, the clustering module 218 may only include error data affecting more than a threshold number of applications in the SDK crash report data 224 to further potentially preserve the anonymity of one or more applications 204 that experience errors. In some cases, only errors (e.g., crashes) observed across more than this threshold number of applications may be reported to the SDK development system 232. These errors may be related to common issues or bugs that are of particular interest to library developers of one or more SDKs 238 associated with the SDK crash report data 224. In some cases, this threshold may include a predetermined or default number of applications.
[0085] 9 is a screen diagram illustrating an exemplary graphical user interface 980 that may be displayed in one or more third-party library development systems based on data provided by an application server system in accordance with one or more aspects of the present disclosure. For illustrative purposes only, FIG. 9 is described with reference to SDK development system 232 and application server system 202 shown in FIG.
[0086] As mentioned above, the SDK crash reporting module 221 The data 224 may be transmitted to an SDK development system 232. One or more SDK console interfaces 234 of the SDK development system 232 may output one or more portions of such SDK crash report data 224 (e.g., in one or more graphical user interfaces) for display on one or more display devices 230. As a result, one or more SDK library developers may review the information output by the SDK console interfaces 234 to determine any issues with each of the SDKs 238 that they have developed or maintained. The graphical user interface 980 shown in FIG. 9 is an example of such a graphical user interface.
[0087] The graphical user interface 980 includes various information provided by the clustering module 218. Also, as described above, the clustering module 118 may generate the clustered library error data 124 and, similarly, may generate the clustered SDK crash report data 224. For example, when generating such clustered SDK crash report data 224 for one or more errors (e.g., crashes) that occur during the execution of one or more of the applications 204, the clustering module 118 may include various forms of clustered information along with the SDK crash report data 224. For example, the clustering module 118 may include information such as the type of application 204, one or more version numbers of at least one of the corresponding SDKs 238, at least one version number of at least one operating system executed by the client computing device 240, information about the client computing device 240 (e.g., operating system or device type information), etc., depending on the type and details included in the application crash report data 222 provided to the application server system 202 by the client computing device 240. Additionally, the clustering module 218 may also include, within the SDK crash report data 224, one or more of the number of applications 204 affected by at least one error over a period of time (e.g., 30 days, 60 days, all cumulative time to date, etc.), the number of users affected by at least one error over that period of time, and / or the number of occurrences of at least one error over that period of time.
[0088] 9 includes various examples of such information. The upper portion of the graphical user interface 980 includes graphs 981, 982, 983 associated with the occurrence of particular errors or crashes over the last 30 days. In some cases, the SDK console interface 234 may output these graphs based on input received from one or more SDK developers provided in the SDK development system 232. For example, an SDK developer may provide user input to the SDK console interface 234 to request information in the graphical user interface for the last 30 days. In other examples, the SDK developer may request information for other time periods (e.g., 60 days, cumulative total time).
[0089] Graph 981 shows a graphical representation of the number of reports (e.g., occurrences) of identified crashes plotted over time. For graph 981, the x-axis indicates time in days and the left y-axis indicates the number of reports. Graph 982 shows a graphical representation of the number of users affected by crashes over time. For graph 982, the x-axis indicates time in days and the left y-axis indicates the number of affected users. Graph 983 shows a graphical representation of the number of affected applications over time for a crash. For graph 983, the x-axis indicates time in days and the right y-axis indicates the number of affected applications (e.g., the number of affected applications 204).
[0090] As shown in FIG. 9 , the graphical user interface also includes additional crash details 984, which may include one or more open cases. In the example of FIG. 9 , crash details 984 may include information for one or more different time points or days. For example, for a particular crash that occurred a particular number of times over the last 30 days (represented by graph 981) affecting a particular number of users (represented by graph 982) and / or applications (represented by graph 983), each line of crash details 984 may include detailed information for one time point (e.g., one day) represented by graphs 981, 982, 983. For example, as shown in FIG. 9 , crash details 984 may identify or indicate, for each respective row corresponding to a particular day, the name or identifier of the SDK associated with the crash, the first affected version number of the SDK, the number of affected users (for a point on graph 982), the number of affected applications (for a point on graph 983), and the reported number of occurrences of the crash (for a point on graph 981).
[0091] 10 is a screen diagram illustrating another exemplary graphical user interface 1090 that may be displayed in one or more third-party library development systems based on data provided by an application server system, in accordance with one or more aspects of the present disclosure. For illustrative purposes only, FIG. 10 is described with reference to SDK development system 232 and application server system 202 shown in FIG. 2.
[0092] Graphical user interface 1090 is another example of an interface that may be output by SDK console interface 234 for display on display device 230 of SDK development system 232. SDK console interface 234 may output graphical user interface 1090 for display upon receiving SDK crash report data 224, which may include clustered data generated by clustering module 218, as described above.
[0093] The upper portion of the graphical user interface 1090 includes graphs 1091, 1092, 1093 associated with occurrences of a particular error or crash over the last 30 days. Different occurrences of this particular crash during one or more executions of the application 204 over time may be associated with one or more version numbers of a particular SDK included in or used by the application 204, one or more version numbers of an operating system (OS) executed by the client computing device 240 while the application 204 is running, and / or one or more device types of the client computing device 240 (e.g., device type based on manufacturer and / or model, device type based on physical characteristics of the client computing device 240, etc.).
[0094] Graph 1091 is a bar graph displaying the percentage of these occurrences of a particular crash or crash type clustered by SDK version, with each bar representing a different SDK version number. An SDK developer for this particular SDK may review graph 1091 to identify a breakdown of different versions of the SDK associated with different occurrences of the same or similar crashes over the last 30 days. Graph 1092 is a bar graph displaying the percentage of occurrences of a particular crash or crash type clustered by OS version, with each bar representing a different OS version number. An SDK developer may review graph 1092 to identify a breakdown of different versions of the OS executed by client computing device 240 associated with different occurrences of the same or similar crashes over the last 30 days.
[0095] Graph 1093 is a bar graph, with each bar representing a different device type, that displays the percentage of occurrences of a particular crash or type of crash clustered by device type of client computing device 240. An SDK version may review graph 1093 to identify a breakdown of different device types of client computing devices 240 that are associated with different occurrences of the same or similar crashes over the last 30 days.
[0096] The graphical user interface 1090 also includes stack information 1094. The stack information 1094 may, in various cases, include a graphical representation of the stack trace data 225 included in the SDK crash report data 224. As shown in FIG. 10 , the stack information 1094 may include identifiers of the OS version and the SDK version associated with the displayed stack trace. For example, the stack trace may be associated with a particular version number of an SDK included in or used by the crashed application and a particular version number of an OS executed by one or more of the client computing devices 240 while the application is running. The stack information 1094 also includes a text representation of one or more portions of the stack trace data 225. For example, this text representation may be one of the error identifier 760 and library dependency source code 761 included in the stack trace data 725, as shown in FIG. 7 . In this example, the particular SDK among the SDKs 238 that may be associated with the occurrence of the crash is the “examplehttp” SDK.
[0097] Figure 11 is a flow diagram illustrating an example operation of a process 1100 performed by an application server system, such as any of the application server systems shown in Figures 1-3, in accordance with one or more aspects of the present disclosure. For illustrative purposes only, the operation of Figure 11 will be described with reference to application server system 102 shown in Figure 1.
[0098] 11 , process 1100 includes application server system 102 receiving 1102, from client computing device 140 (e.g., using application error processing module 120), application error data 122 associated with at least one error that occurred during execution of at least one of applications 104 on client computing device 140. Process 1100 also includes application server system 102 receiving 1104 mapping data 108 providing a mapping between (i) library-dependent source code of the at least one application and (ii) at least one third-party library, where the library-dependent source code is loaded from the at least one third-party library during execution of the at least one application. The at least one third-party library may be included in third-party libraries 138.
[0099] The process 1100 also includes the application server system 102 determining (1106) a match between the library-dependent source code and at least one portion of the application error data 122 based on the application error data 122 and the mapping data 108, and, in response to determining the match, the application server system 102 (e.g., using the library attribution module 114 of the library error data generator 110) attributing (1108) at least one error that occurred during the execution of the at least one application to at least one third-party library. The process 1100 further includes the application server system 102 (e.g., using the library attribution module 114 and / or the clustering module 118 of the library error data generator 110) attributing (1108) at least one error that occurred during the execution of the at least one application to at least one third-party library. , generating (1110) library error data 124 associated with the at least one third-party library, the library error data 124 including at least a portion of the application error data 122, and the process 1100 further includes the application server system 102 (e.g., using the library error reporting module 121) sending (1112) the library error data 124 to one or more third-party library development systems 132 that develop the at least one third-party library.
[0100] In one or more examples, the described functions may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted via a computer-readable medium as one or more instructions or code and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which correspond to tangible media such as data storage media, or communication media, including any medium that enables transfer of a computer program from one place to another, for example, according to a communications protocol. In this manner, computer-readable media may generally correspond to (1) tangible computer-readable storage media that is non-transitory, or (2) a communication medium such as a signal or carrier wave. Data storage media may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and / or data structures for implementation of the techniques described in this disclosure. A computer program product may include a computer-readable medium.
[0101] By way of example, and not limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other storage medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair wire, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, the coaxial cable, fiber optic cable, twisted pair wire, DSL, or wireless technologies such as infrared, radio, and microwave are included within the definition of medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transitory media, and cover non-transitory tangible storage media. As used herein, disk and disc include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disc, and Blu-ray disc. Disks typically reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
[0102] The instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable logic arrays (FPGAs), or other equivalent integrated circuits or discrete logic circuitry. Accordingly, the term "processor," as used herein, may refer to any of the foregoing structures or any other structure suitable for implementing the techniques described herein. Furthermore, in some aspects, the functionality described herein may be provided in dedicated hardware and / or software modules. The techniques may also be implemented entirely in one or more circuits or logic elements.
[0103] The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC), or a set of ICs (e.g., a chipset). Although this disclosure has described various components, modules, or units to emphasize functional aspects of devices configured to perform the disclosed techniques, those components, modules, or units need not necessarily be implemented by different hardware units. Rather, as described above, the various units may be combined in a hardware unit or provided by a collection of operating hardware units, including one or more processors as described above, in association with appropriate software and / or firmware.
[0104] It should be appreciated that, depending on the embodiment, certain acts or events of any of the methods described herein may be performed in a different sequence, added, merged, or omitted entirely (e.g., not all of the described acts or events are required to implement a method). Furthermore, in certain embodiments, acts or events may be performed not sequentially but simultaneously, for example, through multithreading, interrupt processing, or multiple processors.
[0105] In some examples, a computer-readable storage medium includes a non-transitory medium. The term "non-transitory" indicates that the storage medium is not embodied in a carrier wave or propagated signal. In some examples, a non-transitory storage medium may store data that can change over time (e.g., in RAM or cache).
[0106] Various examples have been described. These and other examples are within the scope of the following claims.< / private> < / library>
Claims
1. 1. A method comprising: an application server system including one or more processors receiving, from one or more client computing devices, application error data associated with at least one error that occurred during execution of at least one application on the one or more client computing devices; the application server system determining, based on the application error data, a match between library-dependent source code of the at least one application and at least a portion of the application error data; and in response to determining the match, the application server system attributing the at least one error that occurred during execution of the at least one application to at least one third party library, wherein the library-dependent source code is loaded from the at least one third party library during execution of the at least one application, the method further comprising: The method further includes the application server system generating library error data associated with the at least one third-party library, the library error data including the at least one portion of the application error data. The method includes the application server system sending the library error data to at least one third party library development system that develops the at least one third party library.
2. the application error data includes application crash report data associated with the at least one error that caused the at least one application to crash on the one or more client computing devices; the at least one portion of the application error data includes at least one portion of the application crash report data; The method of claim 1 , wherein the library error data comprises library crash report data that includes the at least one portion of the application crash report data.
3. the application crash report data includes stack trace data representing nested function calls of the at least one application; The method of claim 2 , wherein the at least one portion of the application crash report data includes at least one portion of the stack trace data.
4. 4. The method of claim 3, wherein determining the match includes the application server system matching, based on the stack trace data, one or more patterns of the library-dependent source code with one or more code locations in the at least one portion of the stack trace data.
5. receiving, by the application server system, de-obfuscation data associated with the library-dependent source code from the at least one third-party library development system that develops the at least one third-party library; The method of claim 3 or 4, further comprising: the application server system deobfuscating the at least one portion of the stack trace data based on the deobfuscation data.
6. The method according to any one of claims 3 to 5, wherein generating the library error data includes the application server system generating the library error data by removing application-dependent source code from the stack trace data.
7. the at least one third party library includes at least a first third party library and a second third party library; the library-dependent source code includes first library-dependent source code associated with the first third-party library and second library-dependent source code associated with the second third-party library; the at least one portion of the application error data includes the first library-dependent source code; 7. The method of claim 6, wherein generating the library error data further comprises the application server system removing the second library-dependent source code from the stack trace data to generate the library error data.
8. 8. The method of claim 1, wherein the library error data further indicates one or more of: at least one version number of the at least one third-party library; at least one version number of at least one operating system executed by the one or more client computing devices; at least one device type of the one or more client computing devices; a number of applications affected by the at least one error over a period of time; a number of users affected by the at least one error over the period of time; or a number of occurrences of the at least one error over the period of time.
9. The method further comprises: the application server system determining a first fingerprint identifier associated with the at least one portion of the application error data included in the library error data; the application server system determining a match between the first fingerprint identifier and a second fingerprint identifier associated with previously generated library error data, the previously generated library error data being associated with the at least one third party library, the previously generated library error data including at least one portion of application error data associated with the at least one error that occurred during execution of the at least one application on the one or more client computing devices, the method further comprising: and in response to determining the match between the first fingerprint identifier and the second fingerprint identifier, the application server system clusters the library error data with the previously generated library error data to generate clustered library error data associated with the at least one third-party library, the clustered library error data indicating at least a number of applications affected by the at least one error; The method of any one of claims 1 to 8, wherein transmitting the library error data includes the application server system transmitting the clustered library error data to the at least one third-party library development system.
10. The method further comprises: the application server system determining that the number of the applications affected by the at least one error exceeds a threshold number; 10. The method of claim 9, wherein sending the clustered library error data occurs in response to determining that the number of the applications affected by the at least one error exceeds the threshold number.
11. at least one processor; and at least one computer-readable storage device configured to store instructions executable by said at least one processor, said instructions being executable by said at least one processor to perform the method of any one of claims 1 to 10.
12. A computer readable storage device storing instructions that, when executed, cause at least one processor to perform the method of any one of claims 1 to 10.
Citation Information
Patent Citations
Information processing system, information processing device, information processing method and program
JP2015108939A
Javascript debugging with Just My Code
JP2016511497A
Source code identifying program, source code identifying method, and source code identifying device
JP2018128867A
Method and apparatus for developing autonomous vehicle applications
JP2018538583A
Remote keyboard-video-mouse technologies
US20170353347A1