CN105556482B - 监视移动应用性能 - Google Patents

监视移动应用性能 Download PDF

Info

Publication number
CN105556482B
CN105556482B CN201480035453.6A CN201480035453A CN105556482B CN 105556482 B CN105556482 B CN 105556482B CN 201480035453 A CN201480035453 A CN 201480035453A CN 105556482 B CN105556482 B CN 105556482B
Authority
CN
China
Prior art keywords
call
readjustment
asynchronous
data
code
Prior art date
Application number
CN201480035453.6A
Other languages
English (en)
Other versions
CN105556482A (zh
Inventor
西瓦林甘姆 L·拉温德拉纳斯
J·D·帕德耶
S·阿加瓦尔
R·玛哈简
I·奥博米勒
S·沙亚德
Original Assignee
微软技术许可有限责任公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to US13/923,187 priority Critical
Priority to US13/923,187 priority patent/US9405654B2/en
Application filed by 微软技术许可有限责任公司 filed Critical 微软技术许可有限责任公司
Priority to PCT/US2014/042794 priority patent/WO2014204996A1/en
Publication of CN105556482A publication Critical patent/CN105556482A/zh
Application granted granted Critical
Publication of CN105556482B publication Critical patent/CN105556482B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/87Monitoring of transactions

Abstract

本公开的各方面涉及在实际使用期间监视应用性能,尤其是移动应用性能。描述了检测移动应用二进制文件以自动标识用户事务中的关键路径,包括跨异步调用边界。踪迹数据由被检测应用记录以捕捉UI操纵、线程执行、异步调用和回调、UI更新和/或线程同步。踪迹数据被分析以帮助开发者改善应用性能。

Description

监视移动应用性能

[0001] WS

[0002] 当前在各种应用市场中存在超过百万个移动应用。用户依赖于这些应用来进行各 种各样的任务,诸如在社交联网站点上张贴评论、进行在线银行业务等。

[0003] 移动应用市场是高度竞争性的。结果,开发者力图维护和改善他们应用的质量。实 验室测试提供了一些指导,但却很少是充足的,因为移动应用是高度交互性的,并且难以在 实验室中模拟全部范围的用户交互。此外,移动应用经历各种各样的“实地(in the field)”环境状况,诸如网络连通性(Wi-Fi或3G)、GPS信号质量、以及电话硬件,这些环境状 况在实际用户之间可能变动很大。其他状况也被考虑进来,例如,一些平台API取决于电池 水平而改变它们的行为。这些多样化的状况是难以在实验室中再现的。

[0004] 结果,为了改善应用质量,应用开发者/团队需要理解应用在实地如何执行。然而, 移动应用的异步、多线程化的本质使得难以跟踪应用使用和应用性能来收集数据。移动平 台中固有的资源限制与各种困难复合,例如添加辅助监视应用性能的跟踪代码不会不利地 影响用户体验。

[0005] 挺塗

[0006] 提供本概述以便以简化形式介绍将在以下的详细描述中进一步描述的一些代表 性概念的选集。本概述不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在 以限制所要求保护的主题的范围的任何方式来使用。

[0007] 简言之,本文描述的主题内容的各方面涉及一种其中自动检测应用代码的技术, 包括将一个或多个记录函数以及一个或多个事件处理程序插入应用代码中以记录事件。还 描述了将代码插入应用代码中来为异步调用(asynchronous call)的调用(invocation)指 派标识符,并且使提供给该异步调用的回调绕路到绕路代码以基于标识符将该回调与该异 步调用相关联。

[0008] 在一方面,检测器被配置成用记录功能以及用将异步调用与回调相关联的代码来 检测应用代码。分析组件处理在应用代码的执行期间经由记录功能被记录到有向无环图中 的数据,这些数据表示在执行期间发生的事务。

[0009] 在一方面,在被检测应用代码的执行期间,经由被检测应用代码来记录踪迹数据。 踪迹数据对应于以下至少一者:用户界面(UI)操纵、线程执行、异步调用和回调、UI更新或 线程同步。踪迹数据被上传以供分析处理。

[0010] 结合附图阅读以下详细描述,本发明的其他优点会变得显而易见。

[0011] 附图简述

[0012] 作为示例而非限制,在附图中示出了本发明,附图中相同的附图标记指示相同或 相似的元素,附图中:

[0013] 图1是示出根据一个或多个示例实施例的各种示例组件的框图,这些示例组件包 括监视移动应用性能的检测和分析系统。

[0014] 图2是示出根据一个或多个示例实施例的经由日志记录程序和绕路库来检测应用 的结构的框图。

[0015] 图3是根据一个或多个示例实施例的例如示出用户事务的代码的示例执行踪迹。

[0016] 图4是根据一个或多个示例实施例的例如示出用户事务和其中的关键路径的基于 位置的应用代码的示例执行踪迹。

[0017] 图5是根据一个或多个示例实施例的示出示例应用崩溃/异常路径的示例执行踪 迹。

[0018] 图6是示出根据一个或多个示例实施例的涉及将异步调用与对应回调进行匹配的 示例步骤的流程图。

[0019] 图7是根据一个或多个示例实施例的借此异步调用可以被绕过以将调用与对应回 调进行匹配的一种示例方式的表示。

[0020]图8A和8B是根据一个或多个示例实施例的从用于表示用户事务的记录的踪迹数 据中处理的有向无环图的表示。

[0021] 图9是示出根据一个或多个示例实施例的可被采用来检测代码、执行被检测代码 以收集踪迹数据以供分析、以及分析踪迹数据的示例步骤的流程图。

[0022] 图10是表示移动计算设备形式的示例计算环境的框图,其中本文所描述的主题内 容的各方面可被并入该计算环境中。

[0023] 详细描述

[0024] 本文描述的技术的各方面一般涉及监视移动应用性能,包括通过检测移动应用代 码(二进制代码)来收集踪迹数据(踪迹)。这些踪迹被分析以自动标识用户事务中的关键路 径,包括跨异步调用边界,其中一般来说,用户感知到的等待时间是在关键路径的概念中来 阐述的,因为关键路径提供了用户事务中的瓶颈路径,从而改变关键路径的任一部分的长 度会改变用户感知到的等待时间。一般来说,关键路径开始于用户操纵事件,而结束于UI更 新事件。如本文描述的用户“事务”开始于对UI的用户操纵,而结束于完成应用中由该操纵 触发的同步和异步任务(线程)。如将理解的,在事务期间,可以采取许多中间动作。

[0025] 在一方面,提供不要求来自开发者的输入也不要求对操作系统的任何改变的轻量 检测系统。在一种实现中,检测机制一般通过插入事件处理程序来检测移动应用。性能数据 被实地地收集,并且可被上传到中央服务器以供离线分析。

[0026] 如将理解的,本文描述的检测系统帮助应用开发者诊断他们的应用实地经历的性 能瓶颈和故障。检测机制通过用户事务的代码向开发者提供关于关键路径的信息。这一信 息一般可用于将开发者指向改善用户体验所需的优化。

[0027] 应当理解,本文中的任何示例均是非限制的。因此,本发明不限制于本文所述的任 何具体的实施例、方面、概念、结构、功能或示例。相反,本文中所描述的任何一个实施例、方 面、概念、结构、功能或示例都是非限制性的,并且一般而言可以在计算和成像技术中提供 好处和优点的各种方式来使用本发明。

[0028] 图1是示出基于本文描述的技术的涉及检测和分析系统102的一种实现(例如架 构)的示例概念的框图。示例性系统102用相对较小的开销来捕捉构建用户事务的执行踪迹 以及标识他们的关键路径和异常路径所需的信息。注意到,在决定要捕捉什么的时候,在开 销与向开发者给出有用反馈的能力之间存在折衷。

[0029] 如图1所示,应用104 (例如二进制文件)使用进入被检测应用108中的检测工具(检 测程序106)来检测,如本文所述。注意到,尽管应用二进制文件被用于描述该技术,但任何 代码均可受益于本文描述的技术,例如,操作系统组件、服务等等可被类似地检测和分析, 即便它们在技术上不被认为是应用。

[0030] 在一种实现中,开发者仅需要向检测程序106提供应用二进制文件;不需要其他输 入或源代码注释。对于电话应用,检测程序106利用这样一个事实:电话应用常常使用较高 级的框架来编写并且被编译成中间语言(字节代码)。例如,一种或多种实现被设计成用于 使用Silverlight®框架(被Windows⑧电话市场中的大部分应用所使用)编写并被编译成 MSIL (Microsoft P中间语言)字节代码的应用。MSIL保留程序的结构,包括类型、方法和继 承信息。

[0031] 用户从应用商店110获得被检测应用108的实例。当用户在他们的设备112上实地 运行被检测应用108时,踪迹数据114被收集并上传到服务器116。例如,在基于Windows®| 的电话中,后台传输服务(BTS)可用于上传踪迹数据114;一般而言,在没有前台应用正在运 行时,BTS上传数据,并且在网络中断和丢失的情况下提供可靠传输服务。

[0032] 多个因素影响移动应用的性能,包括用户输入、环境条件等等。应用执行踪迹可以 用不同详细程度来捕捉。

[0033] 踪迹数据由分析组件118分析,并且发现/开发者反馈120例如经由基于web的接口 变得对开发者/团队122可用。开发者/团队122接着可以例如经由经更新的版本来改善应 用。习得的知识还能够改善其他应用。

[0034] —般而言,踪迹数据114对应于捕捉各种类别数据的需要,包括用户何时操纵UI; 应用代码何时在各种线程上执行,以及异步调用与回调之间的因果关系。其他类别包括涉 及线程同步点(例如通过Wait (等待)调用)及其因果关系、UI何时被更新、以及任何未处理 异常的数据。

[0035] 附加数据可被捕捉以供分析。例如,对于某些异步调用,诸如web请求和GPS调用, 可在调用处以及回调处收集附加信息。作为更具体的示例,对于web请求调用,URL和网络状 态可被记录;对于GPS调用,GPS状态可被记录。对要记录的信息的选择可以根据经验以及完 整性与开销之间的折衷来引导。实际数据显示用户事务中的关键路径常常涉及网络或GPS 接入。通过记录某些点处的小量附加信息,可以将附加的有意义反馈提供给开发者。

[0036] 为了收集数据,应用可以在各个步骤中被检测。在一种实现中,应用二进制文件首 先被读取,从而向应用代码中的方法以及向系统调用指派唯一标识符。每一调用站点被认 为是唯一的;例如,如果X被调用两次,则每一调用站点获得其自己的标识符。这一映射被存 储在元数据中(例如,元数据文件中)并被上传到分析组件118中以供稍后使用。另一步骤将 库链接到被检测应用代码224,包括绕路库226和记录程序库228,如图2中一般地表示的。绕 路库226 (基于已知技术)在检测期间被动态生成,并且导出帮助将回调执行归因于触发它 们的异步调用的一系列绕路函数。记录程序库228导出记录函数以及将踪迹记录插入存储 器缓冲器230中的事件处理程序。每一记录用时间戳以及调用该记录函数的线程的标识符 来标签。存储器缓冲器230被转储清除到稳定存储以在需要时防止溢出。当应用退出时,存 储器缓冲器230被调度以供使用BTS进行上传。

[0037] 此外,从恰适位置用对记录程序库228和绕路库226中的方法的调用来检测应用以 收集期望数据。这一过程的示例经由以下表1中示出的代码片段以及图3中的对应事务图来 提供。

[0038]表I:

Figure CN105556482BD00071

[0040] —般来说,用户输入UI操纵事件在用户与UI交互(触摸、轻拂等)时被捕捉。底层框 架232 (图2)将UI输入事件递送到在前台运行的应用的UI线程上。这一系列中的第一事件是 ManipulationStarted (操纵开始)事件,而最后一个是ManipulationEnded (操纵结束)事 件。用于处理UI事件的任何应用指定的处理程序也在这两个事件之间在UI线程上被调用。 例如,在表1中的以上代码中,btnFetch Click (按钮取得点击)处理对按钮的点击事件。当 用户触摸屏幕上的按钮时,处理程序在两个操纵事件之间被调用。

[0041] 记录程序库 228 导出Mani pu IationStar ted 和 Mani pu IationEnded 事件的处理程 序,它们被添加到应用的代码,如一般地在以下的表2的被检测代码中所示。处理程序记录 事件的时间,这允许将UI操纵与用于该UI输入的正确应用处理程序相匹配。

[0042] 表2:

Figure CN105556482BD00081

[0044] 表2示出了表1中的代码的被检测版本。注意到,实际检测是用MSIL字节代码来完 成的,然而出于可读性目的,示出了未经编译的C#代码。

[0045] 图3-5示出移动应用中使用的典型异步编程模式。移动应用在本质上是以UI为中 心的,并且UI由单个专用线程管理,UI更新以及与UI的用户交互发生在这一线程上。为了维 护UI响应性,应用尽可能地避免阻塞UI线程,并且异步地执行大部分工作。一些移动编程框 架(例如SilveHight®)并未提供用于耗时操作(如网络I/O和位置查询)的同步API。计算任 务通常通过派生工作者线程来执行。因此,用户请求以高度异步的方式来处理。这在图3中 解说,图3图形地示出了表1中的代码片段的执行踪迹。在图3中,水平线分段指示线程执行 中花费的时间,而线分段之间的箭头指示线程之间的因果关系。

[0046] 在图3中,画圈的数字⑼到⑻对应于以下描述:

[0047] ⑼用户通过点击按钮开始事务;

[0048] (I)OS在UI线程的上下文中调用事件处理程序(btn-Fetch Click);

[0049] (2)处理程序作出异步HTTP请求,从而提供reqCallback (请求回调)作为回调;

[0050] (3)处理程序退出,从而释放UI线程;

[0051] ⑷时间被花费来下载HTTP内容;

[0052] (5)当HTTP请求完成时,OS调用工作者线程中的reqCallback;

[0053] ⑹工作者线程处理取得的数据;

[0054] ⑺当处理完成时,工作者线程调用UI分派器以使UI更新排队;

[0055] ⑻OS在UI线程上异步地调用所分派的函数(updateUI (更新UI)),该函数更新UI。

[0056] 在实践中,应用通常要复杂得多。例如,工作者线程可进而启动它们自己的工作者 线程,一些用户交互可以启动计时器以通过应用的生存期来执行周期性任务,事务可以由 传感器(诸如加速度计)触发,用户可以中断正在运行的事务或者并行启动另一事务,等等。

[0057] 作为示例,图4解说了对于基于位置的应用而言共同的模式。该应用向用户显示关 于附近餐厅和景点的信息。典型的用户事务如下来行进。在用户操纵之际,应用要求系统获 得GPS固定,并且当获得固定时提供用于调用的回调。在(2),系统获得固定,并且在工作者 线程中调用应用提供的回调。回调函数读取GPS坐标并且作出两个并行web请求以取得某种 位置特定的数据。接着,线程等待(4)两个完成信号。等待经由虚线来指示。当两个web请求 完成时,OS在⑸和(7)调用它们的回调。第一回调在⑹向被阻塞线程用信号指示完成,而 第二回调在(8)这么做。作为第二信号的结果,被阻塞线程在⑼苏醒,并且经由分派器来更 新UI。

[0058] 给定此类复杂的行为,对于开发者而言可能难以查明代码中的瓶颈在哪里以及什 么优化可能改善用户感知到的响应性。在图4中,瓶颈路径涉及第二web请求,这花费更长时 间来完成。注意到,取决于不同用户的设备、位置、网络状况和使用模式,这些瓶颈对于不同 用户可以是不同的。

[0059] 故障分析也被应用的异步本质复杂化。考虑图5中的示例。假设应用在方法 parseURL()⑻中崩溃,该方法在起始于parseXML()⑺的工作者线程中被调用。因为启动 web请求的UI线程函数已经退出,所以操作系统没有关于这一崩溃的用户上下文的信息。因 而,在由当前流行的移动平台提供的异常日志中,开发者仅仅看见崩溃线程的栈踪迹,从 parseURL 〇到parseXML ()。然而,开发者可能想要更多信息,诸如触发该崩溃的用户操纵 以加速问题调试。

[0060] 本文描述的是一种能够跨线程边界来跟踪用户事务的系统(以及其他优点)。该系 统帮助开发者理解他们的应用实地经历的性能瓶颈和故障。如将理解的,这通过向开发者 提供用户事务的关键路径以及当应用在事务期间发生故障时的异常路径来完成。

[0061] 注意到在图3中,用户事务在用户操纵发生时开始,而在更新UI方法完成时结束。 然而,用户事务不必总是伴随着UI更新而结束。例如,后台任务可继续处理超过UI更新而不 影响用户感知到的等待时间。

[0062] 关于关键路径,在图3中,从⑼到(8)的整个路径构成了事务的关键路径。等待时 间可以通过降低下载延迟⑷或处理延迟(6)来降低。在图4中,关键路径由加粗带箭头的虚 线示出。注意到在图4中,与第一web请求的下载和处理有关的活动不在关键路径上(因为 web请求2花费时间最长)。关键路径标识出直接影响用户感知到的等待时间的代码部分。

[0063] 然而,关键路径可以不总是准确地表征用户体验。例如,事务可以对UI作出多次更 新(一次接着一次),并且用户可能仅关心其中之一,或者用户可打断事务以启动新的更新。 因而,关键路径对于理解性能瓶颈是有用的。

[0064] 为了调试应用故障,本文描述的系统向开发者提供异常路径。异常路径是从用户 操纵到异常方法的路径,跨越异步边界。在图5中,(0)到(8)是异常路径。异常路径将开发者 指向启动导致崩溃的异步路径的用户操纵。

[0065] 关于捕捉线程执行,图3中的加粗水平线分段表示在每一线程上执行的应用代码 何时开始以及何时结束。这可以从记录每一方法的开始和结尾的完整执行踪迹中确定。然 而,从移动电话捕捉和上传完整执行踪迹的开销一般是高昂的。因而,在一方面,本文描述 了通过观察在图3中的每一水平线片段的开始处线程栈中的顶部帧对应于应用方法(与框 架内部的方法相反)以及观察这一方法是栈上的唯一应用方法来极大地缩减开销。这些方 法是从框架进入应用代码的向上调用。记录仅仅向上调用的开始和结尾是足够的。当系统 出于各种理由中的任一种来调用应用指定的处理程序(也被称为回调)方法以例如处理用 户输入、计时器期满、传感器触发、或I/O操作的完成时,生成向上调用。注意到,工作者线程 的派生涉及向上调用;应用创建线程,并且指定一方法作为起始方法。这一方法在之后的某 一时间作为Thread. Start的回调被调用。

[0066] 为了检测代码,可以使用试探法来标识潜在的向上调用方法,S卩,当一方法被指定 为对系统调用的回调时,对包括函数指针的方法的引用(在.NET中被称为委托)被传递到系 统调用。例如,在表1中,对reqCalIback的引用被传递到BeginGetResponse (开始获得响应) 系统调用。用于创建委托的MSIL代码具有固定格式,其中两个操作码被用于将函数指针推 送到栈上。被这些操作码引用的任何方法可以被称为向上调用;(注意到,某些UI处理程序 被不同地传递到系统并且也被标识)。

[0067] 系统捕捉潜在的向上调用的开始和结束时间以及指派给它们的标识符。如表2中 所示,为跟踪潜在的向上调用添加的检测由V来添加。表1的示例中的方法是潜在的向上 调用并且因而被检测(表2)。尽管这一技术被保证捕捉向上调用,但它也可检测超过必要的 更多方法,从而施加不必要的开销。在实践中,这一开销与实现的节约相比是可忽略的。

[0068] 转向将异步调用匹配到所得到的向上调用(即它们的回调),作为示例,在图3中, 系统需要匹配标记二⑵和五(5)。为此,系统需要标识异步系统调用被作出的调用站点;例 如,在表1中,BeginGetResponse调用是异步系统调用。系统102记录作为向上调用的回调何 时开始执行,以及如上所述地跟踪向上调用执行的开始。

[0069] 为了标识异步系统调用被作出的调用站点,一般地,系统102假定将委托作为自变 量来接受的任何系统调用是异步调用。然而,在实践中,这一一般试探法被细化,包括通过 检测可异步地调用提供的回调的系统调用(例如使用踪迹中的线程标识符)。另一细化通过 以下表中的“延迟的回调”代码来例示。

[0070] 表3:

Figure CN105556482BD00111

[0072] 在这一示例中,回调委托foo在构建程序被调用时被指定,但仅当Thread.Start被 调用时才被调用,这可能要晚得多。没有细化的一般试探法不正确地将回调匹配到构建程 序的调用站点,而非Thread. Start。然而,关于框架(例如SilverliglU®)系统库的域知识可 被使用,例如,通过知晓回调函数总是从Thread. Start被调用。系统记录线程对象在构建程 序处以及在Thread. Start处的标识符。本文描述的对象标识符和绕路日志允许将回调匹配 到Thread. Start调用。事件订阅可被类似地处理。

[0073] 系统进一步需要将回调执行的开头连接到对应的异步调用。注意到,单个回调函 数(例如用于web请求的完成处理程序)可被指定为若干异步系统调用的回调。重写应用代 码以多次克隆回调函数并且指派唯一标识符是不够的,因为异步调用可以在将相同函数指 定为回调的循环(例如,对于列表中的每一URL,开始下载)中被调用。为了处理此类场景,回 调方法被编写为通过绕路库226来绕过它们;在以下的表4中示出了相关绕路代码。

[0074] 表4:

Figure CN105556482BD00112
Figure CN105556482BD00121

[0077] 注意到,在被检测代码(表2)中,用于绕路的检测用V (星号)来标记。

[0078] 检测可以如下并且如图6中所示地被添加。

[0079] (步骤602和604)将系统调用BeginGetResponse标识为异步调用。在这一示例中, 考虑检测程序已经将调用标识符7指派给这一调用站点。系统记录调用站点标识符,以及调 用的开始时间和结束时间(步骤604)。

[0080] (步骤606)生成匹配所提供的回调函数的签名(S卩reqCallback)的新方法(例如被 称为cbl)并将其添加到绕路库中的绕路类。这一方法负责调用原始回调(表6)。

[0081](步骤608)检测调用站点以调用GetDetour来生成绕路(Detour)对象的新实例。这 一对象存储原始回调,并且在运行时被指派唯一的ID (被称为matchld (匹配Id))。这一匹配 Id帮助将异步调用匹配到回调。

[0082](步骤610)重写应用代码以用新生成的绕路方法Detour.cbl来替换原始回调自变 量。

[0083]在被检测代码的执行期间,绕路代码被调用,如图7中一般地表示的。经由检测,异 步调用722被配置成使得回调是针对DetourObject 774,其中异步调用772与匹配Id相关 联。回调是针对DetourObject 774的DetourCalIback 776,它基于相关联的匹配Id将回调 匹配到调用。从异步调用的角度,回调DownloadCallback (response)(下载回调(响应))778 从绕路对象如常继续,但(经由绕路)与记录相关的信息被知晓与这一异步调用相关联。 [0084] 注意到,从表4中,GetDetour (获得绕路)方法使用记录程序库的LogAsyncStart (记录异步起始)函数来记录异步调用的开头。类似地,回调的开头由LogCallbackStart (记 录回调起始)记录,它将在原始回调被调用之前从cbl被调用。原始回调方法的这些记录以 及UpcalIStart (向上回调起始)记录由匹配Id、调用站点ID、及其线程ID来链接,从而允许 系统将回调归因于正确的异步调用。

[0085] 表4还示出了绕路的另一示例。UpdateUI (更新UI)方法是针对UIDispatcher (UI分 派器)的BeginInvoke (开始调用)方法的回调,并且因此被绕过。

[0086] 在表5中的一系列记录中示出了由表2中的被检测代码所生成的踪迹。

[0087] 表5:

Figure CN105556482BD00131
Figure CN105556482BD00141

[0090] 表5示出了表2中的被检测代码所生成的踪迹。记录1和7示出了 UI操纵事件。这些 记录涵盖了针对方法btnFetch Click的向上调用(记录2-6)。如上所述,这一向上调用归因 于UI操纵。这一方法作出异步系统调用BeginGetResponse (开始获得响应)(记录4),它的回 调被绕过并且被指派为1的匹配ID。记录8标记被绕过的回调的执行的开头,并且调用具有 19的方法ID的实际回调方法reqCallback。这一方法在记录9和13之间执行。记录8和9可被 链接,因为它们具有相同的线程ID,并且跟着彼此。

[0091] 当reqCallback执行时,另一异步调用被作出,S卩,对UI分派器的调用。回调被绕 过,并且被指派为2的匹配ID。实际回调方法是UpdateUI,其具有为21的方法ID。

[0092] 这一方法的完成由记录16来指示。注意到,这一方法在UI线程上运行。记录17指示 LayoutUpdated (布局更新)事件是在这一方法执行之后被立即触发的,这意味着这一方法 更新了UI。

[0093] 在一种实现中,该框架提供了用于线程同步的一组方法。线程等待信号标(例如 Monitor.Wait (obj)),并且通过用信号指示该信号标(例如Monitor.Pulse (obj))而被唤 醒。对这些函数的调用以及它们使用的信号标对象的身份被记录。对象标识符可用于确定 同步调用之间的因果关系。在多个对象上等待,并且线程联结调用被类似地处理。线程也可 使用共享变量来同步,如下所述。

[0094] 关于捕捉UI更新,在一种实现中,只要应用完成对UI的更新,该框架就生成 LayoutUpdated事件。在一种实现中,如果向上调用在UI线程上运行(经由UIDispatcher调 用的事件处理程序或应用方法),并且作为其执行的一部分更新UI的一个或多个元件,则当 向上调用结束时提出单个LayoutUpdated事件。记录程序库导出用于这一事件的处理程序, 它被添加到应用代码。处理程序记录这一事件被提出的时间。

[0095] 当应用代码中出现未被处理的异常时,系统终止应用。在终止之前,系统将特殊事 件递送到应用。与这一事件相关联的数据包含其中异常发生的线程的异常类型以及栈踪 迹。为了记录这一数据,记录程序库导出用于这一事件的处理程序,它被添加到应用代码。

[0096] 转向分析方面,踪迹被分析以描绘个体用户事务以及标识关键路径和异常路径。 事务也可集成地来分析以突出更广泛的趋势。

[0097] 用户事务由有向无环图来表示。该图从踪迹数据中生成。考虑表5中的踪迹,它可 以被转换成图8A中的图。该图包含五种类型的节点,S卩:〇!)用户操纵、(S)向上调用起始、 (E)向上调用结束、(A)异步调用起始、以及(L)布局更新。每一节点表示一个踪迹记录 (Cal IStart、Cal IEnd和Cal IBackStart记录用于书签而不被映射到节点),并且由类型和记 录id来标识。节点类型M、S、E、A和L之间的映射以及记录类型可以从表5中确定。节点之间的 边表示因果关系。例如,IHManipulationStarted (UI操纵起始)事件Ml触发处理程序S2的启 动。类似地,回调执行S9的启动是由异步调用A4引起的。向上调用起始节点“引起”该向上调 用上的任何后续活动。因此,示出S2—A4,因为异步调用是在向上调用的执行期间作出的, 并且S2—E6以表示向上调用结束是由向上调用起始触发的事实。注意到,图8A中的图未示 出任何线程同步事件;这些由三种类型的节点表示,即⑻线程阻塞节点、(F)信号标激发节 点、以及(W)线程苏醒节点,它们在下文参考图8B来描述。

[0098] 当应用踪迹包含交叠的用户事务时,这一办法正确地将它们区分开来并且为每一 用户事务生成图。对应于这一图表示的数据可被用于发现用户事务中的关键路径。

[0099] 如上所述,关键路径是用户事务中的瓶颈路径。用于寻找关键路径的算法是直接 的,如图8A中一般地例示的。分析组件118 (图1)向下遍历该图,从最后UI更新(L17)到用信 号通知事务(Ml)的起始的用户操纵事件,从而在相反方向上遍历每一有向边。这一路径在 被逆转时得到关键路径:]«1、32)4、39^11、315^16、1^17。图84中的示例示出了该系统正确 地计及向上调用内部花费的时间,例如,不在关键路径上的边(S9、E13),这意味着在调用分 派器之后reqCallback方法(表2)中的任何活动都不影响用户感知到的等待时间。注意到, 本文讨论了对这一算法的细化。

[0100] 事务可以多次更新UI。这导致事务图中有多个L节点。仅开发者能够准确确定这些 更新中的哪一个是有意义的。在此类情形中,检测系统默认地报告到最后一个L节点的关键 路径。然而,使用反馈接口或类似接口,开发者能够要求检测系统生成到L个节点中的任一 个节点的关键路径。

[0101] 经由信令的线程同步是另一方面。以上算法隐式地假定每一节点仅具有入射到其 上的一条边。对于图8B所示的图,情形并非如此,它表示图8B中示出的事务。是线程苏醒节 点的节点W具有入射到其上的两条边,因为线程正在等待两个信号标激发(两个F节点)。在 此类情形中,该系统将信号标激发记录的时间戳进行比较并且挑选较后的事件。这得到图 8B中由加粗虚线示出的关键路径。

[0102] 注意到,应用可以启动周期性计时器,该周期性计时器以常规间隔激发并且执行 各种任务,包括UI更新。在一些情形中,周期性计时器也可用于线程同步。这一模式可由系 统检测,并且接着假定每一计时器激发为单独事务的起始。这些事务是计时器事务,以将它 们与用户事务相区分。这些事务可以不以UI更新来结束。传感器驱动的事务以类似方式来 处理。

[0103] 当应用崩溃时,系统记录包括崩溃线程的栈踪迹的异常信息。检测机制生成的踪 迹直到该点才被知晓。系统走查栈帧,直到找到包含检测机制踪迹中的最后一个 Upcal IStart记录的方法名称的桢。与栈踪迹相组合的从事务起始到Upcall起始节点的路 径表示了异常路径。

[0104] 检测机制可通过集体分析事务来帮助开发者看见“更大的图”。存在各种方式来查 看聚集数据。例如,开发者可以通过使用聚集数据来解开性能可变性的根本原因以及发现 “离群者”(例如,与类似事务相比花费异常长的时间来完成的事务)来获益。为了执行这一 分析,具有相同图的事务可被分组在一起,例如,具有相同节点和相同连接关系的事务。这 些事务表示与应用的相同用户交互。这是保守分组;相同的用户交互可能偶尔生成不同的 事务图,但如果两个事务具有相同的图,则它们对应于相同交互的概率是很高的。

[0105] 尽管一个组中的事务具有相同的事务图,但它们的关键路径和历时可以不同。为 了标识这一可变性之后的主要源头,被称为方差分析(ANOVA)的标准统计技术可被用于帮 助理解性能变化。ANOVA量化一个度量中可被归因于贡献于该度量的个体因子的方差的量。 各个因子可包括网络传输、本地处理和GPS查询,这进而可由于网络类型、设备类型、GPS状 态、用户状态等而变化。

[0106] 本文描述的系统还可标记离群事务以帮助开发者标识性能瓶颈。例如,组中具有 高于(均值+ (k*标准差))历时的事务可被标记为离群值;在一种实现中k = 3。

[0107] 图9是包括由检测和分析系统执行的检测、执行和分析步骤的示例步骤的汇总。注 意到,检测、执行和分析是间接相连的,例如,在检测之后用户可能未下载和/或执行被检测 应用的实例达很长时间(例如,数天、数星期、数月等),并且分析可以在执行之后的很长时 间发生。步骤902和904涉及检测应用代码,包括添加库(步骤902)并且导出记录函数和事件 处理程序(步骤904)。

[0108] 步骤910和912涉及执行步骤。如本文所述,在执行期间,被检测代码记录与UI操 纵、线程执行、异步调用和回调、UI更新和/或线程同步有关的数据。异步调用和回调被绕路 以正确地将调用与回调相关联,如本文所述。步骤912表示将被记录的(踪迹)数据上传到服 务器以供后续分析。

[0109] 步骤918和920涉及对踪迹数据的分析,包括接收踪迹数据(它可被存储以供稍后 分析)。分析由步骤920表示,并且包括这些概念,诸如确定事务、将事务表示为有向无环图 (DAG)、以及确定事务的关键路径。还可执行聚集以向开发者给出“大的视图”,如本文所述。

[0110] 示例性操作环境

[0111] 图10示出可在其上实现此处所描述的主题的各方面的合适的移动设备1000的示 例。移动设备1000仅为设备的一个示例,并非旨在对此处所描述的主题的各方面的使用范 围或功能提出任何限制。移动设备1000也不应被解释成对于在示例性移动设备1000中所示 出的任一组件或其组合有任何依赖或要求。

[0112] 参考图10,用于实现此处所述的主题的各方面的示例性设备包括移动设备1000。 在某些实施例中,移动设备1000包括蜂窝电话、允许与其他手持设备的语音通信的手持设 备、某一其他语音通信设备等。在这些实施例中,移动设备1000可配备用于拍摄照片的相 机,虽然这在其他实施例中可能不是必需的。在其他实施例中,移动设备1000包括个人数字 助理(PDA),手持式游戏设备,笔记本计算机,打印机,包括机顶盒、媒体中心或其他电器等 的电器,其他移动设备等。在其他实施例中,移动设备1000可包括通常被认为是非移动的设 备,诸如个人计算机、服务器等。

[0113] 移动设备1000的组件可以包括但不限于,处理单元1005、系统存储器1010和将包 括系统存储器1010在内的各种系统组件耦合至处理单元1005的总线1015。总线1015可包括 几种类型的总线结构中的任何一种,包括存储器总线、存储控制器、外围总线、以及使用各 种总线体系结构中的任一种的局部总线等。总线1015允许数据在移动设备1000的各组件之 间传送。

[0114] 移动设备1000可以包括各种计算机可读介质。计算机可读介质可以是能由移动设 备1000访问的任何可用介质,并包含易失性和非易失性介质以及可移动和不可移动介质两 者。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介 质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据这样的信息的任 意方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括 但不限于,RAM、R0M、EEPR0M、闪存或其他存储器技术、⑶-R0M、数字多功能盘(DVD)或其他光 盘存储、磁带盒、磁带、磁盘存储或其他磁存储设备、或者可用于存储所需信息并且可由移 动设备1000访问的任何其他介质。

[0115] 通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读 指令、数据结构、程序模块或其他数据,并包括任何信息传送介质。术语“已调制数据信号” 是指使得以在信号中编码信息的方式来设置或改变其一个或多个特性的信号。作为示例而 非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、 RF、蓝牙®、无线USB、红夕卜、Wi-Fi、WiMAX、和其它无线介质。上述的任意组合也应包含在计 算机可读介质的范围内。

[0116] 系统存储器1010包括易失性和/或非易失性存储器形式的计算机存储介质,且可 包括只读存储器(ROM)和随机存取存储器(RAM)。在诸如蜂窝电话等移动设备上,操作系统 代码1020有时被包括ROM中,虽然在其他实施例中,这不是必需的。类似地,应用程序1025通 常位于RAM中,虽然同样在其他实施例中,应用程序可位于ROM中或其他计算机可读存储器 中。堆1030提供用于与操作系统1020和应用程序1025相关联的状态的存储器。例如,操作系 统1020和应用程序1025可在它们的操作期间将变量和数据结构存储在堆1030中。

[0117] 移动设备1000还可包括其他可移动/不可移动、易失性/非易失性存储器。作为示 例,图10示出闪存卡1035、硬盘驱动器1036和记忆棒1037。硬盘驱动器1036可被小型化以适 合在例如存储器槽中。移动设备1000可经由可移动存储器接口 1031与这些类型的非易失性 可移动存储器接口,或可经由通用串行总线(USB)、IEEE 10394、一个或多个有线端口 1040、 或天线1065连接。在这些实施例中,可移动存储器设备1035-437可经由通信模块1032与移 动设备接口。在某些实施例中,并非所有这些类型的存储器都可被包括在单个移动设备上。 在其他实施例中,可将这些和其他类型的可移动存储器中的一个或多个包括在单个移动设 备上。

[0118] 在某些实施例中,可按更永久地附连到移动设备1000的方式连接硬盘驱动器 1036。例如,硬盘驱动器1036可连接到诸如并行高级技术附件(PATA)、串行高级技术附件 (SATA)或其他可连接到总线1015的附件等接口。在此类实施例中,移除硬盘驱动器可涉及 移除移动设备1000的外壳并移除将硬盘驱动器1036连接到移动设备1000内的支承结构的 螺丝钉或其他紧固件。

[0119] 以上讨论和在图10中示出的可移动存储设备1035-1037及其相关联的计算机存储 介质提供对用于移动设备1000的计算机可读指令、程序模块、数据结构、和其他数据的存 储。例如,一个或多个可移动存储器设备1035-1037可存储由移动设备1000拍摄的图像、语 音录音、联系人信息、程序、用于程序的数据等。

[0120] 用户可通过诸如键区1041和话筒1042等输入设备向移动设备1000中输入命令和 信息。在某些实施例中,显示器1043可以是触敏屏幕并可允许用户在其上输入命令和信息。 键区1041和显示器1043可通过耦合到总线1015的用户输入接口 1050连接到处理单元1005, 但也可由其他接口和总线结构连接,如通信模块1032和有线端口 1040。运动检测1052可被 用于确定关于设备1000做出的姿势。

[0121] 例如,用户可经由对话筒1042讲话并经由在键区1041或触敏显示器1043上输入的 文本消息来与其他用户通信。音频单元1055可提供电信号以驱动扬声器1044以及接收并数 字化接收自话筒1042的音频信号。

[0122] 移动设备1000可包括提供信号以驱动相机1061的视频单元1060。视频单元1060还 可接收由相机1061获得的图像并将这些图像提供给包括在移动设备1000上的处理单元 1005和/或存储器。由相机1061获得的图像可包括视频、不形成视频的一个或多个图像、或 其某一组合。

[0123] 通信模块1032可向一根或多根天线1065提供信号并从其接收信号。天线1065之一 可发射并接收用于蜂窝电话网络的消息。另一天线可发射并接收蓝牙®消息。又一天线(或 共享天线)可经由无线以太网网络标准发射并接收网络消息。

[0124] 更进一步,天线将例如GPS信号等基于位置的信息提供给GPS接口和机制1072。进 而,GPS机制1072使得对应的GPS数据(例如,时间和坐标)可用于处理。

[0125] 在某些实施例中,可使用单根天线来发射和/或接收用于超过一种类型的网络的 消息。例如,单根天线可发射并接收语音和分组消息。

[0126] 当在网络化环境中操作时,移动设备1000可连接到一个或多个远程设备。远程设 备可包括个人计算机、服务器、路由器、网络PC、蜂窝电话、媒体回放设备、对等设备或其他 常见的网络节点,并且一般包括上面相对于移动设备1000所述的许多或全部元件。

[0127] 本文所描述的主题的各方面可与众多其他通用或专用计算系统环境或配置一起 操作。适用于此处所描述的主题的各方面的公知的计算系统、环境和/或配置的示例包括, 但不限于,个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器 的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机、大型计算机、包括上述系统或 设备中的任一个的分布式计算环境等。

[0128] 此处所描述的主题的各方面可在由移动设备执行的诸如程序模块等计算机可执 行指令的一般上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据 类型的例程、程序、对象、组件、数据结构等。本文所述的主题的各方面也可以在其中任务由 通过通信网络链接的远程处理设备执行的分布式计算环境中实现。在分布式计算环境中, 程序模块可以位于包括存储器存储设备的本地和远程计算机存储介质中。

[0129] 此外,虽然此处频繁使用术语服务器,但可以认识到,该术语也可涵盖客户机、分 布在一个或多个计算机上的一个或多个进程的集合、一个或多个独立的存储设备、一个或 多个其他设备的集合、以上的一个或多个的组合,等等。

[0130]

[0131] 本发明易于作出各种修改和替换构造,但其某些说明性实施例在附图中示出 并在上面被详细地描述。然而应当了解,这不旨在将本发明限于所公开的具体形式,而是相 反地,旨在覆盖落入本发明的精神和范围之内的所有修改、替换构造和等效方案。

Claims (9)

1. 一种用于检测应用代码的方法,包括:自动检测应用代码,包括将一个或多个记录函 数以及一个或多个事件处理程序插入所述应用代码以记录事件,以及将代码插入所述应用 代码以为异步调用的调用指派标识符,并且使提供给所述异步调用的回调绕路到绕路代码 以基于所述标识符将所述回调与所述异步调用相关联,其中记录在执行期间的数据包括通 过以下将异步调用匹配到对应的回调: 标识调用站点,所述异步调用在所述调用站点处被作出; 将调用站点标识符指派到所述调用站点; 记录所述调用站点标识符以及何时所述回调开始作为向上调用执行;以及 将所述回调的执行的开始与所述异步调用相关联。
2. 如权利要求1所述的方法,其特征在于,将一个或多个记录函数以及一个或多个事件 处理程序插入所述应用代码包括向所述应用代码添加导出一个或多个记录函数以及一个 或多个事件处理程序的记录程序库。
3. 如权利要求1所述的方法,其特征在于,进一步包括: a) 添加绕路库以提供所述绕路代码,或者 b) 记录用户事务的事件,或者 c) 记录包括与至少一个事件有关的定时信息的事件,或者 d) 跟踪异常路径,或者 e) 记录应用执行期间的事件,包括记录以下至少一者:用户界面(UI)操纵、线程执行、 异步调用和回调、UI更新或线程同步,或者 f) a)、b)、c)、d)、e)或f)的任何组合。
4. 如权利要求3所述的方法,其特征在于,进一步包括g)分析所述用户事务,包括标识 其中的关键路径,或者h)将所述用户事务表示为有向无环图,并且其中标识所述关键路径 包括处理所述有向无环图,或者i) g)和h)两者。
5. —种用于检测应用代码的系统,包括:检测程序,所述检测程序被配置成用记录功能 以及用将异步调用与回调相关联的代码来检测应用代码,以及分析组件,所述分析组件被 配置成处理在所述应用代码的执行期间经由所述记录功能被记录到有向无环图中的数据, 所述数据表示在执行期间发生的一个或多个事务,其中记录在执行期间的数据包括通过以 下将异步调用匹配到对应的回调: 标识调用站点,所述异步调用在所述调用站点处被作出; 将调用站点标识符指派到所述调用站点; 记录所述调用站点标识符以及何时所述回调开始作为向上调用执行;以及 将所述回调的执行的开始与所述异步调用相关联。
6. 如权利要求5所述的系统,其特征在于,所述分析组件被配置成a)处理至少一个有向 无环图以确定关键路径,或者b)将被记录的数据处理成异常路径,或者a)与b)两者。
7. 如权利要求5所述的系统,其特征在于,所述记录功能被配置成记录涉及以下至少一 者的数据:用户事务、计时器事务、传感器驱动事务、用户界面(UI)操纵、线程执行、异步调 用和回调、UI更新、或者线程同步。
8. —种用于检测应用代码的方法,包括: (a)执行被检测的应用代码; (b) 记录经由所述被检测的应用代码在执行期间的数据,所述数据对应于以下至少一 者:用户界面(UI)操纵、线程执行、异步调用和回调、UI更新或线程同步,其中记录在执行期 间的数据包括通过以下将异步调用匹配到对应的回调: 标识调用站点,所述异步调用在所述调用站点处被作出; 将调用站点标识符指派到所述调用站点; 记录所述调用站点标识符以及何时所述回调开始作为向上调用执行;以及 将所述回调的执行的开始与所述异步调用相关联;以及 (c) 更新所述数据以供分析处理。
9.如权利要求8所述的方法,其特征在于,将所述异步调用匹配到所述对应的回调包括 检测所述异步调用以指派唯一标识符并且将提供给所述异步调用的回调绕路到绕路代码, 并且经由所述标识符来将所述回调与所述异步调用相关联。
CN201480035453.6A 2013-06-20 2014-06-17 监视移动应用性能 CN105556482B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US13/923,187 2013-06-20
US13/923,187 US9405654B2 (en) 2013-06-20 2013-06-20 Monitoring mobile application performance
PCT/US2014/042794 WO2014204996A1 (en) 2013-06-20 2014-06-17 Monitoring mobile application performance

Publications (2)

Publication Number Publication Date
CN105556482A CN105556482A (zh) 2016-05-04
CN105556482B true CN105556482B (zh) 2018-05-22

Family

ID=51168438

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480035453.6A CN105556482B (zh) 2013-06-20 2014-06-17 监视移动应用性能

Country Status (4)

Country Link
US (3) US9405654B2 (zh)
EP (1) EP3011457A1 (zh)
CN (1) CN105556482B (zh)
WO (1) WO2014204996A1 (zh)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3019971B1 (en) * 2013-07-12 2020-05-06 Google LLC Methods and systems for performance monitoring for mobile applications
US9836193B2 (en) * 2013-08-16 2017-12-05 International Business Machines Corporation Automatically capturing user interactions and evaluating user interfaces in software programs using field testing
US9438491B1 (en) * 2014-03-11 2016-09-06 Apteligent, Inc. Service monitor for monitoring a network connection to track the performance of an application running on different mobile devices
US9606870B1 (en) 2014-03-31 2017-03-28 EMC IP Holding Company LLC Data reduction techniques in a flash-based key/value cluster storage
US9703551B2 (en) * 2014-04-28 2017-07-11 Ca, Inc. Modifying mobile application binaries to call external libraries
US9356969B2 (en) * 2014-09-23 2016-05-31 Intel Corporation Technologies for multi-factor security analysis and runtime control
US9754002B2 (en) * 2014-10-07 2017-09-05 Excalibur Ip, Llc Method and system for providing a synchronization service
US9483283B1 (en) * 2014-11-20 2016-11-01 Apptimize, Inc. Enhanced code callback
US10133622B2 (en) * 2014-11-24 2018-11-20 Microsoft Technology Licensing, Llc Enhanced error detection in data synchronization operations
US9582312B1 (en) * 2015-02-04 2017-02-28 Amazon Technologies, Inc. Execution context trace for asynchronous tasks
WO2016175863A1 (en) * 2015-04-30 2016-11-03 Hewlett Packard Enterprise Development Lp Monitoring application operations using user interaction times
US10235266B2 (en) * 2015-07-10 2019-03-19 Ca, Inc. Application screen mapping for mobile analytics
KR20170014861A (ko) * 2015-07-31 2017-02-08 삼성전자주식회사 응용 프로그램을 제어하기 위한 장치 및 방법
US10152527B1 (en) 2015-12-28 2018-12-11 EMC IP Holding Company LLC Increment resynchronization in hash-based replication
US9992264B2 (en) 2016-02-02 2018-06-05 Salesforce.Com, Inc. High-speed trace functionality in an on-demand services environment
US10324635B1 (en) 2016-03-22 2019-06-18 EMC IP Holding Company LLC Adaptive compression for data replication in a storage system
US10310951B1 (en) 2016-03-22 2019-06-04 EMC IP Holding Company LLC Storage system asynchronous data replication cycle trigger with empty cycle detection
US10095428B1 (en) 2016-03-30 2018-10-09 EMC IP Holding Company LLC Live migration of a tree of replicas in a storage system
US9959063B1 (en) 2016-03-30 2018-05-01 EMC IP Holding Company LLC Parallel migration of multiple consistency groups in a storage system
US9959073B1 (en) 2016-03-30 2018-05-01 EMC IP Holding Company LLC Detection of host connectivity for data migration in a storage system
US10565058B1 (en) 2016-03-30 2020-02-18 EMC IP Holding Company LLC Adaptive hash-based data replication in a storage system
US10095599B2 (en) * 2016-03-31 2018-10-09 International Business Machines Corporation Optimization for application runtime monitoring
WO2017194991A1 (en) * 2016-05-10 2017-11-16 Pratik Sharma Dynamic policy driven application performance monitoring
US10015181B2 (en) * 2016-05-19 2018-07-03 International Business Machines Corporation Using natural language processing for detection of intended or unexpected application behavior
US10083067B1 (en) 2016-06-29 2018-09-25 EMC IP Holding Company LLC Thread management in a storage system
US10013200B1 (en) 2016-06-29 2018-07-03 EMC IP Holding Company LLC Early compression prediction in a storage system with granular block sizes
US9983937B1 (en) 2016-06-29 2018-05-29 EMC IP Holding Company LLC Smooth restart of storage clusters in a storage system
US10048874B1 (en) 2016-06-29 2018-08-14 EMC IP Holding Company LLC Flow control with a dynamic window in a storage system with latency guarantees
US10152232B1 (en) * 2016-06-29 2018-12-11 EMC IP Holding Company LLC Low-impact application-level performance monitoring with minimal and automatically upgradable instrumentation in a storage system
US10073767B2 (en) * 2017-01-18 2018-09-11 Pivotal Software, Inc. Trace Management
CN107562540A (zh) * 2017-09-05 2018-01-09 武汉斗鱼网络科技有限公司 向ui线程投递回调函数的方法、装置及客户端
US10817307B1 (en) * 2017-12-20 2020-10-27 Apple Inc. API behavior modification based on power source health
US20200272552A1 (en) 2019-02-22 2020-08-27 Microsoft Technology Licensing, Llc Machine-based recognition and dynamic selection of subpopulations for improved telemetry
CN110245076A (zh) * 2019-05-21 2019-09-17 深圳壹账通智能科技有限公司 基于功能测试的因素影响程度确定方法、装置及终端设备
CN111221907A (zh) * 2019-12-31 2020-06-02 武汉达梦数据库有限公司 一种基于日志解析的数据库添加列同步方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1755643A (zh) * 2004-09-27 2006-04-05 华为技术有限公司 一种软件测试的方法
US7506318B1 (en) * 2005-06-28 2009-03-17 Replay Solutions, Inc. Recording and replaying computer programs
US7657876B2 (en) * 2001-08-24 2010-02-02 Microsoft Corporation System and method for using data address sequences of a program in a software development tool

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6553564B1 (en) * 1997-12-12 2003-04-22 International Business Machines Corporation Process and system for merging trace data for primarily interpreted methods
US6327699B1 (en) * 1999-04-30 2001-12-04 Microsoft Corporation Whole program path profiling
US8312435B2 (en) * 2000-12-26 2012-11-13 Identify Software Ltd. (IL) System and method for conditional tracing of computer programs
US7386839B1 (en) * 2002-11-06 2008-06-10 Valery Golender System and method for troubleshooting software configuration problems using application tracing
US7788644B2 (en) * 2005-03-24 2010-08-31 Sap Ag Method and system for monitoring performance on a mobile device
GB0521465D0 (en) 2005-10-21 2005-11-30 Law Gregory E W System and method for debugging of computer programs
US8776027B2 (en) * 2009-03-06 2014-07-08 Microsoft Corporation Extracting and collecting platform use data
US8271837B2 (en) * 2010-06-07 2012-09-18 Salesforce.Com, Inc. Performing asynchronous testing of an application occasionally connected to an online services system
US9021586B2 (en) * 2010-07-20 2015-04-28 At&T Intellectual Property I, L.P. Apparatus and methods for preventing cross-site request forgery
CN103365707B (zh) * 2012-03-30 2016-08-03 国际商业机器公司 控制异步调用的返回的方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7657876B2 (en) * 2001-08-24 2010-02-02 Microsoft Corporation System and method for using data address sequences of a program in a software development tool
CN1755643A (zh) * 2004-09-27 2006-04-05 华为技术有限公司 一种软件测试的方法
US7506318B1 (en) * 2005-06-28 2009-03-17 Replay Solutions, Inc. Recording and replaying computer programs

Also Published As

Publication number Publication date
US20140380282A1 (en) 2014-12-25
EP3011457A1 (en) 2016-04-27
CN105556482A (zh) 2016-05-04
US10013332B2 (en) 2018-07-03
US9405654B2 (en) 2016-08-02
WO2014204996A1 (en) 2014-12-24
US20170132111A1 (en) 2017-05-11
US20190370147A1 (en) 2019-12-05

Similar Documents

Publication Publication Date Title
US10193775B2 (en) Automatic event group action interface
US10209956B2 (en) Automatic event group actions
US10592694B2 (en) Anonymizing machine data events
CN107690623B (zh) 自动异常检测和解决系统
US9246773B2 (en) System, method, and graphical user interface for application topology mapping in hosted computing environments
Ma et al. Protracer: Towards Practical Provenance Tracing by Alternating Between Logging and Tainting.
AU2016204068B2 (en) Data acceleration
CN105745626B (zh) 基于进程快照的诊断生产应用
US10237292B2 (en) Selecting network security investigation timelines based on identifiers
US9507847B2 (en) Automatic log sensor tuning
US10318360B2 (en) Registry for app features referenced pointers and pointer definitions
US20160112341A1 (en) Method, system and program product for allocation and/or prioritization of electronic resources
US10681060B2 (en) Computer-implemented method for determining computer system security threats, security operations center system and computer program product
EP3053123B1 (en) Metering user behaviour and engagement with user interface in terminal devices
US20160292611A1 (en) System Monitoring with Key Performance Indicators from Shared Base Search of Machine Data
CN106067080B (zh) 提供可配置工作流能力
US20190306184A1 (en) Detection of anomalies in a time series using values of a different time series
US20170147681A1 (en) Portable Control Modules in a Machine Data Driven Service Monitoring System
Olsson et al. Computer forensic timeline visualization tool
US20170093645A1 (en) Displaying Interactive Topology Maps Of Cloud Computing Resources
US9021444B2 (en) Combined performance tracer and snapshot debugging system
US20160242024A1 (en) Purposed device management platform
US9202185B2 (en) Transaction model with structural and behavioral description of complex transactions
US9323647B2 (en) Request-based activation of debugging and tracing
US10324828B2 (en) Generating annotated screenshots based on automated tests

Legal Events

Date Code Title Description
PB01 Publication
C06 Publication
SE01 Entry into force of request for substantive examination
C10 Entry into substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180522

Termination date: 20190617

CF01 Termination of patent right due to non-payment of annual fee