CN105745626B - 基于进程快照的诊断生产应用 - Google Patents
基于进程快照的诊断生产应用 Download PDFInfo
- Publication number
- CN105745626B CN105745626B CN201480062946.9A CN201480062946A CN105745626B CN 105745626 B CN105745626 B CN 105745626B CN 201480062946 A CN201480062946 A CN 201480062946A CN 105745626 B CN105745626 B CN 105745626B
- Authority
- CN
- China
- Prior art keywords
- snapshot
- carrying
- code
- point
- server
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
- G06F8/751—Code clone detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
调试和诊断系统允许动态代码生成,该动态代码生成将代码插入生产应用以标识使得在预定义条件被满足的情况下快照被拍摄的快照点或断点。快照点与生产应用的源代码中的位置相关联并包括必须被满足以创建生产应用的快照的条件语句。快照点被用来生成收集计划,收集计划被提供给运行生产应用的服务器。服务器基于收集计划重写生产应用的代码,以插入在条件语句满足时创建快照的指令。
Description
技术领域
本公开涉及基于进程快照的诊断生产应用。
背景技术
传统的软件诊断工具(诸如调试器、剖析器以及存储器诊断工具)通常对实况的、正在运行的进程或保存的、重量进程状态(诸如进程转储文件或历史轨迹)进行操作。实况的进程提供关于进程如何达到其当前状态的很少的历史上下文或不提供关于进程如何达到其当前状态的历史上下文。在冗长的同时,创建和分析进程转储文件是极其重量且耗时的。
用于诊断运行在生产环境中的应用中的逻辑问题的大部分当前最新工艺使用轨迹语句或动态跟踪。例如,轨迹语句,诸如打印调试,监视指示进程的执行的流的打印语句。动态跟踪,诸如微软在保持生产进程停止时实时收集数据。另一方法是允许诊断解释,诸如微软iDNA。所有这些当前的方法具有缺点。
如果现有跟踪不够,那么跟踪需要修改代码。这样的修改需要重构并重新部署应用。对于跟踪,仅开发者实际上添加到跟踪的数据可见。由于跟踪实时运行而所涉及的线程在数据被收集时不能执行真正工作,跟踪语句趋向于很小且仅收集少量比特的信息。
低影响的方法,诸如跟踪和在可被收集的数据方面非常受限,因为收集必须实时发生,其可能对目标进程有很大影响并可能降低吞吐量和性能。
经解释模型,诸如微软公司的Time Travel Tracing(iDNA),有巨大影响,使得它们不适合在生产环境中诊断问题。
不侵略性且不破坏性地收集诊断数据是重要的。在生产环境中,诊断工具应当对生产进程和系统具有很少影响或不具有影响。使用现有的方案来对进程状态数据进行收集可能以不期望的方式影响进程和系统。
发明内容
提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
本发明的各实施例允许用户研究服务器进程上的问题而不停止该进程。用户可标识进程代码中在特定条件下可在那里收集大量数据的点。用户可设立用于数据收集的点,并在每个点处定义数据收集的条件。代替实况调试该进程,所收集的数据被导出到可被上传到服务器的文件或收集计划。监视实用程序消费收集计划并注入使得进程的快照被创建的代码。监视实用程序修改被分析的函数的IL(中间语言),使得条件执行并确定何时创建进程的快照。在条件满足时,快照创建整个进程的副本,包括存储器空间、模块列表等等。用户可随后使用快照副本来检查任何变量的值。
一旦快照被创建,用户可向它们附连调试器并以类似于崩溃转储的方式来分析它们。可替换地,收集器进程可被用于从快照挖掘数据。通过创建多个快照,用户获得了随时间在进程中发生了什么的历史图片。例如,用户可通过在不同位置拍摄若干快照来模拟步进。用户通过分析逐快照的改变来诊断生产应用。
本发明的各实施例允许动态代码生成,其将代码插入生产应用以标识在预定义条件满足的情况下使得快照被拍摄的快照点或断点。
附图说明
为了进一步阐明本发明的各实施例的以上和其他优点和特征,将参考附图来呈现本发明的各实施例的更具体的描述。可以理解,这些附图只描绘本发明的典型实施例,因此将不被认为是对其范围的限制。本发明将通过使用附图用附加特征和细节来描述和解释,附图中:
图1示出用快照的历史调试。
图2示出根据一个实施例的轻量进程快照。
图3是示出根据一个实施例的使用收集器进程的诊断的流程图。
图4是系统的框图,其中生产应用在数据中心或分布式网络中的服务器上运行。
图5示出了集成开发环境(IDE),其中开发者已经为所涉及的应用打开了一个项目。
图6示出了收集计划XML文件内的快照点的示例定义。
图7是用于分析生产进程而不停止或影响进程的系统的框图。
图8图示了适当的计算和联网环境的示例。
具体实施方式
本发明的各实施例通过允许开发者定义数据应当在哪里被捕捉以及在什么情况下它应当被获得来允许诊断生产应用。这些诊断点在本文中也被称为“快照点(snappoint)”。每个快照点导致进程的整个副本在存储器内被创建。在本文中被称为“快照”的这些副本可在一个实施例中使用极为高效的机制来创建,该机制包括操作系统中的写时复制语义以及捕捉其它小的重要数据结构,诸如线程列表、模块列表、以及线程上下文。不同操作系统可结合其它机制来创建进程的快速副本。每个快照花费大约10ms来创建。其它因初始进程页面发生故障的快照花费随时间分摊。然而,对于大多数具有常规数据位置的应用,从页面故障恢复的花费是极小的。
一旦快照(或一系列快照)被创建,诸如调试器的诊断工具可附连到快照以检查。替代地,诊断收集器进程可在快照上运行并调用它想要的任何数据。使用快照,收集不受限制,因为它不在生产中的实况服务器进程中实时执行。
使用多个快照,开发者可看见应用随时间的状态,就好像它们是实况调试一样,而不会影响实况生产进程的可用性。此外,使用高级条件,诸如使得每个快照点针对专门选择的web请求来执行,开发者可确保快照点逻辑相关(甚至在立即处理许多web请求的所加载的生产服务器上)。
快照与目标进程在其上运行的操作系统合作来被创建。相比于要求诊断工具亲自生成快照,这允许快照被快得多地并使用较少的系统资源来被创建。在一个实施例中,操作系统的存储器映射机制和写时复制(copy-on-write)被用于在目标进程的地址空间中映射到新的快照进程。进程快照可以是使用页表复制和写时复制操作的对正在执行的进程的克隆。进程快照可通过其它方式被创建,诸如通过在目标进程上反射或复制目标进程的存储器地址。
如果原始进程被允许运行,则新的存储器页副本在进程向每页进行写时被创建。这可对原始进程的性能具有一些最小影响,但是它必须仅在当某页被实际写入时创建实际页。
在一些实施例中,进程状态可被诊断工具复制。例如,进程快照机制可能不对模块列表或线程列表进行快照,但是诊断工具可快速地创建模块列表或线程列表的快照并不以复制进程堆或栈所需要的方式来消耗资源。
快照模型在调试会话期间启用历史调试的模式。随着时间的被调试进程的快照允许用户查看被调试进程的状态,就好像其在快照被摄取时所存在的那样。用户可控制何时快照被摄取或调试器可在某个预定的触发或事件后自动地摄取快照。系统的物理和逻辑资源是对一次可为进程创建的快照的数量的唯一限制。这使得调试会话一次具有存在于系统中的多个快照成为可能。
图1示出用快照的历史调试。调试器进程101被用于调试被调试进程102。调试器进程101具有允许用户分析被调试进程的组件的用户界面。例如,用户界面可以提供示出调用栈103、模块104、线程105和变量检查106的窗口。被调试进程102包括,例如,线程107、模块108和虚拟存储器109。虚拟存储器109指向由操作系统的虚拟存储器管理器111所管理的物理存储器页110。
在调试会话期间,创建快照112和113。这些是在特定时间摄取的被调试进程102的快照。可以由用户手动发起快照112、113,或者调试器101可以在当观察到特定事件或触发时或以某些间隔自动生成快照112、113。
快照112包括线程表114和模块表115,它们是在快照112被创建的时刻(T1)时调试器101的内部表的副本。虚拟存储器页表116指向在快照112被创建的时刻T1时所使用的物理存储器页110。最初,虚拟存储器109和虚拟存储器116将是等同的;然而,随着被调试进程继续运行,虚拟存储器109将改变,因为它的页表指向了经更新的存储器位置110。
类似地,在另一时刻(T2),响应于用户选择或由调试器进程101所观察到的事件或触发的出现,创建进程快照113。快照113包括在当该快照和当时的虚拟存储器页表119的副本一起被创建的时刻T2时的线程表117和模块表118的副本。
快照112、113允许调试器进程101或用户回看在快照112、113被创建的时刻(T1,T2)被调试进程102看起来像什么,尽管被调试进程102在此期间已经被改变。并且,调试器进程可以比较被调试进程102和/或进程快照112、113之间的状态以生成在不同的时间的不同进程状态之间的差异,这样用户可以查看进程的哪个部分已经被改变以及如何被改变。
在其它实施例中,可以创建快照112并且允许在没有干扰的情况下运行原始的被调试进程102。随后可以对进程快照112运行测试以观察该进程如何被影响。如果进程快照112失败或具有归咎于测试的其它问题,那么这些问题将不会影响真实的正在运行的进程102。
图2示出根据一个实施例的轻量进程快照。原始进程201包括指向存储在物理存储器203中的数据的页表202。例如,进程201可以在页表条目204中存储变量X,其指向实际存储了变量X的值的物理存储器位置205。
当从原始进程201创建进程快照206时,原始页表202被复制作为快照页表207。快照页表207的内容与原始页表202的内容相同,因为它是在快照被创建时存在的。例如,在进程快照206中,变量X指向快照页表207中的条目208,其像原始页表202一样指向存储了变量X的值的物理存储器位置205。
在快照被创建之后,原始进程201可以继续运行。原始进程可以生成变量X的新值,该新值再次被存储在原始页表202的条目204中。然而,变量X的新值是被存储在物理存储器203的新位置209中。因此,原始页表202被更新以指向物理存储器位置209,但快照页表207维持其快照状态并指向变量X的原始值仍然驻留在其中的存储器位置205。
快照机制允许较少破坏性的调试检查。通常当在中断模式中调试进程时,被调试进程被操作系统停止。这意味着在被调试进程内的代码不执行。这对于检查被调试状态来说是理想的,因为该状态在所述进程被停止时不能改变。然而,在一些情形中,停止所述进程会导致死锁或其它系统不稳定性。例如,当被调试进程在其它进程中被共享时,其它进程可能会尝试与处于中断模式中的共享的被调试进程进行通信。在最佳情形下这会导致在其它进程中的延迟,而在最坏情况下这将导致死锁、进程破坏和不稳定性。轻量快照模型通过允许调试器检查共享的进程的轻量进程快照而不是真实进程,能够在这样的情形中进行调试。真实进程被允许在该检查期间继续执行。
生产环境中的逻辑错误可使用针对生产进程的进程快照来被诊断。这使得收集器免于实时运行。进程快照使用操作系统的寻呼系统和写时复制语义来创建生产进程的存储器的闪电快速副本。一旦这一快照被创建,诊断收集器进程可按需从快照收集数据,而不影响生产进程。收集器进程可按其自己的安排(即,想要多迟钝就多迟钝)来从进程快照收集数据。快照的最初实时花费是线性地取决于进程页表的大小。其余花费随时间分摊,因为写时复制在第一次写到每页期间发生。
由于操作系统具有受限的资源,控制快照的数量是重要的。快照可使用,例如,在间隔采样、添加“超级跟踪”函数、和/或扩展现有检测点来被创建。在另一个实施例中,快照模型被使用,其中开发者定义在哪里以及在什么条件下快照应当被拍摄。快照模型类似于调试器断点。开发者通过打开生产应用的源项目并在代码编辑器中创建快照点来创建收集计划。例如,这些快照点可被定义在源文件/行号配对上,或可在特定数据点改变时发生。收集计划可接着使用生产监视系统来被上传到生产服务器。
一旦部署到生产环境,所涉及的应用可使用IL重写技术来被检测,诸如通过获得现有组件并在运行时修改它。每个文件行快照点导致对快照API的调用,并且每个数据快照点导致将数据字段转换成调用该快照API的属性设置器。
在其它实施例中,使用除IL重写外的其它技术来修改生产机器上的代码也是可能的。例如,如果生产应用使用非基于IL的代码,诸如本机代码,那么生产应用可通过将原始机器代码注入原始本机代码来被修改。经解释的环境,诸如Javascript,也可使用本发明。解释器(其可以采用匹配高级语言)可评估快照点条件。如果经解释的表达评估为真,那么解释器创建快照。
开发者可围绕所生成的快照点检测来创建复杂条件表达式以确定在什么条件下快照应被创建。可能条件的示例将会是:以快照点命中的次数作为条件、在特定数据条件或代码途径被采取时创建快照点、或选择对生产服务器的特定“受害人”请求,其中这个请求是快照点被创建所针对的唯一一个。最后一个点确保随时间在重度负载的服务器上获得的一系列快照与同一web请求逻辑地相关。
最后,一旦快照点被创建,收集器进程在它们上面运行,从进程收集如它所需要的那么多的数据。替换地,开发者可将专门的调试器附连到一个或多个快照来研究这个问题。对收集器可用的数据包括全部线程、调用栈、寄存器,以及整个进程堆。由于快照点本质上是进程的存储器内转储,收集器可作为低优先级进程来运行,从而最小化对生产系统的影响。
在快照被处理后,它们被关闭并且系统资源被释放。收集器进程的结果被序列化为有时间概念的文件格式。多个快照的结果将被包含在此文件中。这将允许开发者在每个快照点随时间检查完整进程。这个文件可包含每个快照点的不受限的数据。
图3是示出根据一个实施例的使用收集器进程的诊断的流程图。当在服务器(诸如处理实况用户请求的任何服务器)上发生问题时,开发者可用公式表示关于问题发生之处的假设。以迭代的方式使用图3所示的方法,开发者可分析此问题。
在步骤301,开发者打开IDE并定义快照点应当发生在何处。在步骤302,开发者选择快照点的命中计数条件和其它条件。例如,一个条件可以是每个快照点在同一web请求上被激发。在步骤303,快照点定义被导出到收集计划文件。
在步骤304,收集计划例如通过云门户被上传到生产进程正在其上运行的服务器。在步骤305中,生产进程通过收集代理来检测,使得快照API在每个快照点被调用。
在步骤306,请求进入生产服务器并触发每个快照点。在步骤307,如果在步骤302定义的条件评估为真,则每个快照点创建一个快照。在步骤308,收集器进程唤醒并开始提取诊断信息,诸如来自每个快照的调用栈以及变量值。在步骤309,从每个快照点收集的数据被添加到表示多个时间点的收集文件。
在步骤310,收集文件被下载到开发者机器,其可在那儿被理解多个时间上下文的诊断工具(诸如调试器)来消费。基于收集到的信息,开发者可用公式表示新假设并重复步骤301-310中的过程以定义新快照点。
图4是系统的框图,其中生产应用在数据中心或分布式网络404(其可以是例如云计算环境)中的服务器401-403上运行。开发者可在与服务器401-403进行通信的终端405上访问应用代码。在示例实施例中,大范围web应用可在分布式网络404上的服务器401-403上运行。用户可将应用的问题报告给开发者,开发者不能在运行在开发者终端405上的应用的本地安装上再现错误。开发者可在运行在服务器401-403上的生产应用中设置快照点以收集数据来分析问题。
开发者可定义要在生产应用内分析的命中-计数条件。例如,IL重写检测引擎可被用来创建快照的唯一标识符、一类命中-计数条件、以及命中计数条件目标。函数调用可被注入生产应用来在命中-计数条件满足时创建快照。
图5示出了集成开发环境(IDE)501,其中开发者已经为一个所涉及的应用打开了一个项目。例如,IDE 501可在开发者终端405(图4)上运行。IDE 501显示应用的源代码502。开发者可在源代码502中的他感兴趣看生产应用中发生了什么的每个位置处设置断点503、504。断点503、504对应于代码中开发者想要程序停止(如果他正在实况调试问题)的位置。
开发者接着打开工具菜单505并选择导出快照点选项506以创建收集计划。收集计划可以是描述源代码中断点503、504发生的位置以及断点条件的XML文件。XML文件包含将代码注入生产进程以使得快照被创建所需的信息。
图6示出了收集计划XML文件602内的快照点601的示例定义。响应于开发者选择导出快照选项505(图5),收集计划文件602可从IDE中被发出。
XML文件602包含全部被绑定的快照点数据。<AssemblyName>(组件名)标识快照点被绑定的DLL。<MethodToken>(方法令牌)定义快照点被绑定到DLL内哪个函数。<IlOffset>(Il偏移)是MSIL从函数的开始的整数偏移。<HitCountType>(命中计数类型)和<HitCountTarget>(命中计数目标)定义快照点的条件。快照点的条件可对应于普通调试断点中使用的标准条件,例如命中计数,值条件等等。
在创建收集计划602之后,开发者在实况进程中启用它。例如,开发者可使用IDE中的选项来发布新收集计划,或使用数据中心门户中的选项来上传收集计划并启动收集。例如,使用终端405(图4)的开发者可使用门户来将收集计划602上传到数据中心或云计算环境404。收集计划602接着被分发到运行生产应用的全部机器和服务器401-402。在那些机器和服务器上运行的进程消费收集计划使得应用代码被重写。例如,在CLR的情况中,剖析API使得代码被重写以发出包括条件的代码以及新函数调用的新IL,其中条件包括命中计数或变量值,新函数调用使得快照被创建。应当理解,此进程不限于CLR,而是也可连同其它实现(诸如本机实现、Java、解释器、或可使用收集计划文件来创建新类型的断点的任何实现)一起被使用。由于生产服务器或机器为每个快照点执行代码,如果围绕那个快照点的条件被满足,则新进程快照被创建。
快照被创建而不停止生产进程,使得进程用户不知道发生了任何事或快照点发生。这允许开发者创建什么正造成进程中的问题的假设,描述快照点条件以分析那个假设,将收集计划发送到进程,并接着收集数据,而用户继续使用进程而没有任何性能影响且不停止处理。
进程快照可以以多个不同方式来被消费。在一个实施例中,实况调试器可附连到快照,其将给予开发者与用小转储(minidump)或进程的其它磁盘上副本来工作类似的体验。这将允许调试器查看在快照时间进程的整个状态。在另一个实施例中,收集器进程在快照被创建时被激活。收集器进程接着从快照挖掘数据。在此情况中,开发者不需要访问机器。相反,收集进程可从快照挖掘所需的那么多的数据,并将数据在分开的文件中转发给开发者。例如,文件可使用中可用的包括来自多个时间的数据的历史格式。允许多快照被收集并被序列化到盘的其它文件格式也可以被使用。
图7是用于分析生产进程而不停止或影响进程的系统的框图。生产进程701正在生产服务器702上运行,生产服务器702可被部署在数据中心或云计算环境中。生产进程701对应于开发者机器704上的项目代码703。如果开发者想要检查生产进程701的操作,他使用IDE 705来访问项目代码703。
开发者在感兴趣的位置处的项目代码703中创建断点,诸如在开发者假设正在导致用户错误的代码片段中。断点包括条件语句使得它们仅在预定义条件下被触发。IDE 705生成描述源代码中断点发生的位置以及断点条件的收集计划706。
IDE 705将收集计划705导出或上传到生产服务器702上的重写剖析器707。重写剖析器发出生产进程701的新代码,其包括收集计划中定义的条件。新代码被注入生产进程701并包括在条件满足时导致快照被创建的新函数调用。
生产进程701继续用新代码运行,其已被更新而不会影响用户。当在收集计划中定义的条件被满足时,快照函数被调用,且进程701的快照708被创建并被传递到收集器代理709。快照708可被传递到开发者机器704上的调试器710用于进一步分析。替换地,收集器代理709可挖掘快照寻找数据并接着将数据传递到IDE 705用于进一步分析。
使用这个过程,生产进程的重新部署不再需要。这避免了停工并允许生产进程维持状态而不影响用户。开发者接收对应于设置在项目代码703中的断点的快照709,并可分析那些快照以验证生产进程中发生的问题或故障的源。例如,开发者可定义仅在他们的假设正确的情况下将发生的断点。对应快照将接着允许进一步分析处于错误条件下的进程。
在收集器代理或调试器从快照中挖掘数据时,对原始进程的破坏被最小化。这允许随着时间摄取大量的快照来收集特定且被抽象的数据(与收集整个存储器转储相反),并且允许趋势被容易地确定。
图8解说了其上可以实现图1-7的示例的适当的计算和联网环境800的示例。计算系统环境800只是合适的计算环境的一个示例,而非意在暗示对本发明的使用或功能性范围有任何限制。本发明可用众多其他通用或专用计算系统环境或配置来操作。适用于本发明的公知计算系统、环境、和/或配置的示例包括但不限于:个人计算机、服务器计算机、手持式或膝上型设备、平板设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、微型计算机、大型计算机、包括任何以上系统或设备的分布式计算环境等等。
本发明可在诸如程序模块等由计算机执行的计算机可执行指令的通用上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本发明也可被实践在分布式计算环境中,分布式计算环境中任务是由通过通信网络链接的远程处理设备执行的。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和/或远程计算机存储介质中。
参考图8,用于实现本发明的各个方面的示例性系统可以包括计算机800形式的通用计算设备。组件可包括但不限于诸如处理单元801之类的各种硬件组件、诸如系统存储器之类的数据存储802、以及将包括数据存储802在内的各种系统组件耦合到处理单元801的系统总线803。系统总线803可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线和使用各种总线架构中的任一种的局部总线。作为示例而非限制,这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线(也称为夹层(Mezzanine)总线)。
计算机800通常包括各种计算机可读介质804。计算机可读介质804可以是能由计算机800访问的任何可用介质,并同时包含易失性和非易失性介质以及可移动、不可移动介质,但不包括传播信号。作为示例而非限制,计算机可读介质804可包括计算机存储介质和通信介质。计算机存储介质包括以存储诸如计算机可读的指令、数据结构、程序模块或其他数据之类的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不仅限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁存储设备,或可以用来存储所需信息并可以被计算机800访问的任何其他介质。通信介质通常以诸如载波或其他传输机制之类的已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息传送介质。术语“已调制数据信号”是指使得以在信号中编码信息的方式来设置或改变其一个或多个特性的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上面各项中的任何项的组合也包括在计算机可读介质的范围内。计算机可读介质可被实现为计算机程序产品,诸如存储在计算机存储介质上的软件。
数据存储或系统存储器802包括诸如只读存储器(ROM)和/或随机存取存储器(RAM)之类的易失性和/或非易失性存储器形式的计算机存储介质。基本输入/输出系统(BIOS)包含有助于诸如启动时在计算机800中元件之间传递信息的基本例程,它通常被存储在ROM中。RAM通常包含处理单元801可立即访问和/或当前正在操作的数据和/或程序模块。作为示例而非限制性,数据存储802保存操作系统、应用程序、其他程序模块、和程序数据。
数据存储802还可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,数据存储802可以是对不可移动、非易失性磁介质进行读写的硬盘驱动器,对可移动、非易失性磁盘进行读写的磁盘驱动器,以及对诸如CD ROM或其它光学介质等可移动、非易失性光盘进行读写的光盘驱动器。可在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。上文所描述的并且在图8中所显示的驱动器以及它们的关联的计算机存储介质,为计算机800提供对计算机可读取的指令、数据结构、程序模块及其他数据的存储。
用户可通过用户界面805或诸如平板、电子数字化仪、话筒、键盘和/或定点设备(通常指的是鼠标、跟踪球或触摸垫)等其它输入设备输入命令和信息。其他输入设备可以包括操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。另外,语音输入、使用手或手指的手势输入、或其它自然用户界面(NUI)也可与适当的输入设备(诸如话筒、相机、平板、触摸垫、手套、或其它传感器)一起使用。这些及其他输入设备常常通过耦合到系统总线803的用户输入接口805连接到处理单元801,但是,也可以通过其他接口和总线结构,如并行端口、游戏端口、通用串行总线(USB)端口来进行连接。计算机可读介质804或其他类型的显示设备也通过诸如视频接口之类的接口连接至系统总线803。监视器806也可以与触摸屏面板等集成。注意到监视器和/或触摸屏面板可以在物理上耦合至其中包括计算设备800的外壳,诸如在平板型个人计算机中。此外,诸如计算设备800等计算机还可以包括其他外围输出设备,诸如扬声器和打印机,它们可以通过输出外围接口等连接。
计算机800可使用至一个或多个远程设备(诸如远程计算机)的逻辑连接807在网络化或云计算环境中操作。远程计算机可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,并且一般包括上面关于计算机800所述的许多或全部元件。图8中所描述的逻辑连接包括一个或多个局域网(LAN)和一个或多个广域网(WAN),但是,也可以包括其他网络。此类联网环境在办公室、企业范围的计算机网络、内联网和因特网中是常见的。
当在联网或云计算环境中使用时,计算机800可通过网络接口或适配器807连接至公共或私有网络。在一些实施例中,使用调制解调器或用于在网络上建立通信的其它装置。调制解调器可以是内置或外置的,它经由网络接口807或其它适当的机制连接至系统总线803。诸如包括接口和天线的无线联网组件可通过诸如接入点或对等计算机之类的合适的设备耦合到网络。在联网环境中,相关于计算机800所示的程序模块或其部分可被存储在远程存储器存储设备中。可以理解,所示的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其他手段。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。更确切而言,上述具体特征和动作是作为实现权利要求的示例形式公开的。
Claims (12)
1.一种分析正在执行的进程的方法,所述方法包括:
访问开发者机器上正在执行的进程的源代码;
在所述源代码中定义一个或多个快照点,所述快照点用所述源代码中的位置以及一个或多个条件语句来定义;
生成包括一个或多个快照点的所述定义的收集计划;
将收集计划发送到运行正在执行的进程的服务器;
修改所述服务器上的正在执行的进程的代码,以包括用于每次快照点的所述一个或多个条件语句被满足时从正在执行的进程中创建快照的指令,其中所述快照包括使用页表复制和写时复制操作的对所述正在执行的进程的克隆,并且其中所述快照在不停止所述服务器上的正在执行的进程的情况下在命中-计数条件被满足时创建;
在对应快照点的一个或多个条件语句被满足时生成快照;
将诊断工具与所述快照相关联;以及
使用所述诊断工具从所述快照中收集数据,而不影响所述正在执行的进程。
2.如权利要求1所述的方法,其特征在于,使用集成开发环境(IDE)或开发者机器上的编辑器来访问所述源代码。
3.如权利要求1所述的方法,其特征在于,所述源代码中的所述一个或多个快照点被定义为断点。
4.如权利要求1所述的方法,其特征在于,通过使用所述服务器上的剖析器API来修改所述正在执行的进程的所述代码。
5.如权利要求1所述的方法,其特征在于,通过所述服务器上的中间语言(IL)-重写来修改所述正在执行的进程的所述代码。
6.如权利要求1所述的方法,其特征在于,通过将机器代码注入所述服务器上的本机代码中来修改所述正在执行的进程的所述代码。
7.如权利要求1所述的方法,其特征在于,所述正在执行的进程的所述代码运行在经解释的环境中,所述方法还包括:
由解释器评估快照点条件;以及
在所述快照点条件评估为真时由所述解释器创建所述快照。
8.如权利要求1所述的方法,其特征在于,进一步包括:
从所述正在执行的进程中生成一个或多个附加的快照;以及
比较来自所述快照中任意快照的数据以标识随着时间的存储器使用方面的改变。
9.在计算环境中的一种包括用于调试正在执行的进程的功能的计算机系统,所述计算机系统包括:
一个或多个处理器;
一个或多个计算机可读介质;
被作为存储在所述计算机可读介质上的计算机可执行指令来实现的一个或多个计算机模块,所述计算机可执行指令在由一个或多个处理器执行时使得所述处理器如下执行:
在运行所述进程的生产服务器处接收正在执行的进程的快照收集计划,所述快照收集计划标识所述正在执行的进程的源代码中的一个或多个快照点,所述快照点用所述源代码中的位置以及一个或多个条件语句来定义;
修改所述生产服务器上的正在执行的进程的代码,以包括用于每次快照点的所述一个或多个条件语句被满足时从正在执行的进程中创建快照的指令;
在对应快照点的所述一个或多个条件语句满足时生成所述正在执行的进程的快照,所述快照包括使用页表复制和写时复制操作的对所述正在执行的进程的克隆,其中所述快照在不停止所述生产服务器上的正在执行的进程的情况下在命中-计数条件被满足时创建;
将诊断工具与所述快照相关联;以及
使用所述诊断工具从所述快照中收集数据,而不影响所述正在执行的进程。
10.如权利要求9所述的计算机系统,其特征在于,所述快照收集计划从用集成开发环境(IDE)或开发者机器上的编辑器接收。
11.一种包括用于执行如权利要求1-8中的任一项所述的方法的装置的计算机系统。
12.一种具有指令的计算机可读存储介质,所述指令在被执行时使机器执行如权利要求1-8中的任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/083,157 US10289411B2 (en) | 2013-11-18 | 2013-11-18 | Diagnosing production applications |
US14/083,157 | 2013-11-18 | ||
PCT/US2014/065592 WO2015073761A2 (en) | 2013-11-18 | 2014-11-14 | Diagnosing production applications |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105745626A CN105745626A (zh) | 2016-07-06 |
CN105745626B true CN105745626B (zh) | 2019-05-14 |
Family
ID=52001105
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480062946.9A Active CN105745626B (zh) | 2013-11-18 | 2014-11-14 | 基于进程快照的诊断生产应用 |
Country Status (4)
Country | Link |
---|---|
US (3) | US10289411B2 (zh) |
EP (1) | EP3072051B1 (zh) |
CN (1) | CN105745626B (zh) |
WO (1) | WO2015073761A2 (zh) |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8909990B2 (en) | 2012-08-04 | 2014-12-09 | Microsoft Corporation | Historical software diagnostics using lightweight process snapshots |
WO2015118454A1 (en) * | 2014-02-04 | 2015-08-13 | ZeroTurnaround AS | System and method for providing runtime diagnostics of executing applications |
US8997081B1 (en) * | 2014-09-18 | 2015-03-31 | Ensighten, Inc. | Analytics for mobile applications |
US9612939B2 (en) | 2014-10-29 | 2017-04-04 | Microsoft Technology Licensing, Llc. | Diagnostic workflow for production debugging |
US9632915B2 (en) | 2014-10-29 | 2017-04-25 | Microsoft Technology Licensing, Llc. | Historical control flow visualization in production diagnostics |
US10353679B2 (en) * | 2014-10-31 | 2019-07-16 | Microsoft Technology Licensing, Llc. | Collecting profile data for modified global variables |
US9672139B2 (en) * | 2015-07-21 | 2017-06-06 | Successfactors, Inc. | Debugging in a production environment |
JP2017072983A (ja) * | 2015-10-07 | 2017-04-13 | 富士通株式会社 | 実行結果表示プログラム、情報処理装置および情報処理システム |
US9898389B2 (en) * | 2016-01-07 | 2018-02-20 | International Business Machines Corporation | Debugging a transaction in a replica execution environment |
US10417113B1 (en) | 2016-03-10 | 2019-09-17 | Amdocs Development Limited | System, method, and computer program for web testing and automation offline storage and analysis |
US10114636B2 (en) | 2016-04-20 | 2018-10-30 | Microsoft Technology Licensing, Llc | Production telemetry insights inline to developer experience |
CN107395381A (zh) * | 2016-05-16 | 2017-11-24 | 中兴通讯股份有限公司 | 一种报文处理方法、装置及系统 |
WO2018045545A1 (en) * | 2016-09-09 | 2018-03-15 | Microsoft Technology Licensing, Llc | Automated performance debugging of production applications |
CN107977304B (zh) * | 2016-10-24 | 2021-05-25 | 北京京东尚科信息技术有限公司 | 一种系统调试方法和装置 |
US10303580B2 (en) | 2017-01-11 | 2019-05-28 | International Business Machines Corporation | Controlling debug processing |
US9959194B1 (en) | 2017-03-08 | 2018-05-01 | Microsoft Technology Licensing, Llc | Indexing a trace by insertion of memory snapshots for replay responsiveness |
US9934127B1 (en) | 2017-03-08 | 2018-04-03 | Microsoft Technology Licensing, Llc | Indexing a trace by insertion of key frames for replay responsiveness |
US9940369B1 (en) | 2017-03-08 | 2018-04-10 | Microsoft Technology Licensing, Llc | Searching an indexed time-travel trace |
US9983978B1 (en) | 2017-03-08 | 2018-05-29 | Microsoft Technology Licensing, Llc | Querying an indexed time-travel trace |
US9934126B1 (en) | 2017-03-08 | 2018-04-03 | Microsoft Technology Licensing, Llc | Indexing a trace by insertion of reverse lookup data structures |
US10185645B2 (en) | 2017-03-08 | 2019-01-22 | Microsoft Technology Licensing, Llc | Resource lifetime analysis using a time-travel trace |
US20180276410A1 (en) * | 2017-03-21 | 2018-09-27 | O.C. Tanner Company | System and Method for Providing Secure Access to Production Files in a Code Deployment Environment |
US10613964B2 (en) * | 2017-05-04 | 2020-04-07 | Microsoft Technology Licensing, Llc | Conditional debugging of server-side production code |
US10534693B2 (en) | 2017-05-04 | 2020-01-14 | Microsoft Technology Licensing, Llc | Temporary de-optimization of target functions in a cloud debugger |
US10282274B2 (en) | 2017-06-14 | 2019-05-07 | Microsoft Technology Licensing, Llc | Presenting differences between code entity invocations |
US11037080B2 (en) * | 2017-10-05 | 2021-06-15 | Aconex Limited | Operational process anomaly detection |
US10540253B2 (en) | 2017-11-30 | 2020-01-21 | International Business Machines Corporation | Breakpoint with specified anchor points |
US10783055B2 (en) | 2018-01-08 | 2020-09-22 | Ozcode Ltd. | Time travel source code debugger incorporating live coding ability |
US10541042B2 (en) | 2018-04-23 | 2020-01-21 | Microsoft Technology Licensing, Llc | Level-crossing memory trace inspection queries |
US10740219B2 (en) | 2018-04-27 | 2020-08-11 | Workman Nydegger | Selectively tracing portions of computer process execution |
US10747645B2 (en) | 2018-04-27 | 2020-08-18 | Microsoft Technology Licensing, Llc | Selectively tracing portions of computer process execution |
US10698792B2 (en) | 2018-05-02 | 2020-06-30 | Microsoft Technology Licensing, Llc | Execution control with cross-level trace mapping |
US10956304B2 (en) * | 2019-01-25 | 2021-03-23 | Microsoft Technology Licensing, Llc | Dynamic diagnostic code instrumentation over a historic program execution |
US10877873B2 (en) | 2019-02-07 | 2020-12-29 | Microsoft Technology Licensing, Llc | Using historic execution data to visualize tracepoints |
US10747505B1 (en) * | 2019-05-17 | 2020-08-18 | Google Llc | API specification generation |
US11307966B2 (en) * | 2020-04-06 | 2022-04-19 | Red Hat, Inc. | Shared software debugging service |
CN113010178A (zh) * | 2021-02-20 | 2021-06-22 | 北京字节跳动网络技术有限公司 | 应用程序运行控制方法、装置、设备和介质 |
US20230004476A1 (en) * | 2021-07-01 | 2023-01-05 | Hewlett-Packard Development Company, L.P. | Application failure tracking features |
EP4209912A1 (en) * | 2022-01-06 | 2023-07-12 | Siemens Aktiengesellschaft | Method for enhancing the debugging capability for a software program |
CN115858399B (zh) * | 2023-02-09 | 2023-05-05 | 创智和宇信息技术股份有限公司 | 一种利用线程栈快照进行代码级性能分析的方法和系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102129408A (zh) * | 2011-04-14 | 2011-07-20 | 电子科技大学 | 一种基于记录回放技术的嵌入式软件调试装置和方法 |
Family Cites Families (105)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0690378A1 (en) | 1994-06-30 | 1996-01-03 | Tandem Computers Incorporated | Tool and method for diagnosing and correcting errors in a computer programm |
US5694539A (en) | 1994-08-10 | 1997-12-02 | Intrinsa Corporation | Computer process resource modelling method and apparatus |
US5621886A (en) * | 1995-06-19 | 1997-04-15 | Intel Corporation | Method and apparatus for providing efficient software debugging |
US5675644A (en) | 1995-09-26 | 1997-10-07 | Qualcomm Incorporated | Method and apparatus for canceling echo accounting for delay variations |
US5796819A (en) | 1996-07-24 | 1998-08-18 | Ericsson Inc. | Echo canceller for non-linear circuits |
US6275868B1 (en) * | 1997-03-12 | 2001-08-14 | Microsoft Corporation | Script Engine interface for multiple languages |
WO1999001819A1 (en) * | 1997-07-01 | 1999-01-14 | Progress Software Corporation | Testing and debugging tool for network applications |
US6202199B1 (en) * | 1997-07-31 | 2001-03-13 | Mutek Solutions, Ltd. | System and method for remotely analyzing the execution of computer programs |
US6282701B1 (en) * | 1997-07-31 | 2001-08-28 | Mutek Solutions, Ltd. | System and method for monitoring and analyzing the execution of computer programs |
DE19831320A1 (de) | 1998-07-13 | 2000-01-27 | Ericsson Telefon Ab L M | Digitales adaptives Filter und akustischer Echokompensator |
US7020697B1 (en) * | 1999-10-01 | 2006-03-28 | Accenture Llp | Architectures for netcentric computing systems |
US6671825B1 (en) * | 1999-11-19 | 2003-12-30 | Oracle International Corporation | Method and apparatus for debugging a software program |
US6745344B1 (en) | 1999-11-19 | 2004-06-01 | Oracle International Corporation | Debug and data collection mechanism utilizing a difference in database state by using consecutive snapshots of the database state |
US7058928B2 (en) * | 1999-12-23 | 2006-06-06 | Identify Software Ltd. | System and method for conditional tracing of computer programs |
US20020087949A1 (en) * | 2000-03-03 | 2002-07-04 | Valery Golender | System and method for software diagnostics using a combination of visual and dynamic tracing |
US6981243B1 (en) | 2000-07-20 | 2005-12-27 | International Business Machines Corporation | Method and apparatus to debug a program from a predetermined starting point |
DE10036278A1 (de) * | 2000-07-26 | 2002-02-07 | Bosch Gmbh Robert | Verfahren zur Überwachung eines Programmablaufs mittels einer Debug Logik |
CA2321019A1 (en) * | 2000-09-27 | 2002-03-27 | Ibm Canada Limited-Ibm Canada Limitee | Capturing snapshots of a debuggee's state during a debug session |
WO2002052411A1 (en) * | 2000-12-21 | 2002-07-04 | Veritas Operating Corporation | Computer software run-time analysis systems and methods |
US6993751B2 (en) | 2001-05-14 | 2006-01-31 | Microsoft Corporation | Placing exception throwing instructions in compiled code |
CA2347647A1 (en) | 2001-05-15 | 2002-11-15 | Ibm Canada Limited-Ibm Canada Limitee | Storing and restoring snapshots of a computer process |
US6996806B2 (en) | 2001-09-21 | 2006-02-07 | International Business Machines Corporation | Graphical view of program structure during debugging session |
US7047519B2 (en) * | 2001-09-26 | 2006-05-16 | International Business Machines Corporation | Dynamic setting of breakpoint count attributes |
US6964036B2 (en) | 2002-05-21 | 2005-11-08 | International Business Machines Corporation | Descriptive variables while debugging |
US7296259B2 (en) | 2002-09-11 | 2007-11-13 | Agere Systems Inc. | Processor system with cache-based software breakpoints |
US6901581B1 (en) | 2002-10-02 | 2005-05-31 | Eridon Corporation | Method for software debugging via simulated re-execution of a computer program |
US7155708B2 (en) | 2002-10-31 | 2006-12-26 | Src Computers, Inc. | Debugging and performance profiling using control-dataflow graph representations with reconfigurable hardware emulation |
US7574585B1 (en) * | 2003-01-31 | 2009-08-11 | Zilog, Inc. | Implementing software breakpoints and debugger therefor |
US7114150B2 (en) * | 2003-02-13 | 2006-09-26 | International Business Machines Corporation | Apparatus and method for dynamic instrumenting of code to minimize system perturbation |
US20040196405A1 (en) | 2003-04-04 | 2004-10-07 | Thomas Spinelli | Method and apparatus for listening to audio corresponding to a PIP display |
US7383539B2 (en) * | 2003-09-18 | 2008-06-03 | International Business Machines Corporation | Managing breakpoints in a multi-threaded environment |
US7222264B2 (en) * | 2004-03-19 | 2007-05-22 | Intel Corporation | Debug system and method having simultaneous breakpoint setting |
US7353427B2 (en) * | 2004-04-08 | 2008-04-01 | International Business Machines Corporation | Method and apparatus for breakpoint analysis of computer programming code using unexpected code path conditions |
US8490064B2 (en) | 2004-05-21 | 2013-07-16 | Oracle International Corporation | Hierarchical debug |
US20050289396A1 (en) * | 2004-06-25 | 2005-12-29 | Hooper Donald F | Conditional breakpoint using breakpoint function and breakpoint command |
US8136096B1 (en) | 2004-07-23 | 2012-03-13 | Green Hills Software, Inc. | Backward post-execution software debugger |
US7392324B2 (en) * | 2004-08-13 | 2008-06-24 | International Business Machines Corporation | Consistent snapshots of dynamic heterogeneously managed data |
US7552425B2 (en) * | 2004-08-19 | 2009-06-23 | International Business Machines Corporation | Implementing enhanced compiled breakpoint analysis |
US20060047715A1 (en) * | 2004-08-27 | 2006-03-02 | Archer Analytics, Inc. | System and method for managing and analyzing data from an operational database |
US20060059146A1 (en) * | 2004-09-16 | 2006-03-16 | International Business Machines Corporation | Method and system for tracing components of computer applications |
US7903137B2 (en) | 2004-10-15 | 2011-03-08 | Lifesize Communications, Inc. | Videoconferencing echo cancellers |
US20060143412A1 (en) * | 2004-12-28 | 2006-06-29 | Philippe Armangau | Snapshot copy facility maintaining read performance and write performance |
US7958486B2 (en) | 2005-04-22 | 2011-06-07 | Sap Ag | Methods and systems for data-focused debugging and tracing capabilities |
US20060288332A1 (en) * | 2005-06-21 | 2006-12-21 | Microsoft Corporation | Workflow debugger |
US9146832B2 (en) | 2005-10-14 | 2015-09-29 | Oracle International Corporation | Debugging functionality embedded in an application |
GB0521465D0 (en) | 2005-10-21 | 2005-11-30 | Law Gregory E W | System and method for debugging of computer programs |
US9268666B2 (en) | 2005-10-21 | 2016-02-23 | Undo Ltd. | System and method for debugging of computer programs |
US7890941B1 (en) | 2005-11-10 | 2011-02-15 | Oracle America, Inc. | Binary profile instrumentation framework |
US20070168972A1 (en) * | 2005-11-30 | 2007-07-19 | International Business Machines Corporation | Debugging a computer program |
US20070168997A1 (en) * | 2005-12-20 | 2007-07-19 | Duong-Han Tran | Debugging of remote application software on a local computer |
US7849445B2 (en) * | 2005-12-20 | 2010-12-07 | Sap Ag | Remote user interface for external connections |
US8849691B2 (en) | 2005-12-29 | 2014-09-30 | Microsoft Corporation | Modeling user input and interaction in workflow based applications |
CN100485636C (zh) * | 2006-04-24 | 2009-05-06 | 华为技术有限公司 | 一种基于模型驱动进行电信级业务开发的调试方法及装置 |
US20080178143A1 (en) * | 2006-10-05 | 2008-07-24 | Cort Dougan | System, Method and Computer Program Product for Developing, Configuring, Installing and Testing Software |
US8429613B2 (en) | 2006-10-31 | 2013-04-23 | Microsoft Corporation | Stepping and application state viewing between points |
US20080155330A1 (en) | 2006-11-27 | 2008-06-26 | Sourcecode Technology Holding, Inc. | Methods and apparatus for debugging a workflow process |
US8108839B2 (en) * | 2006-11-30 | 2012-01-31 | International Business Machines Corporation | Method and apparatus for tracing execution of computer programming code using dynamic trace enablement |
US7870356B1 (en) * | 2007-02-22 | 2011-01-11 | Emc Corporation | Creation of snapshot copies using a sparse file for keeping a record of changed blocks |
US8069371B2 (en) | 2007-04-26 | 2011-11-29 | Hewlett-Packard Development Company, L.P. | Method and system for remotely debugging a hung or crashed computing system |
US20080301717A1 (en) * | 2007-05-31 | 2008-12-04 | Microsoft Corporation | Visualizing a memory footprint of an application program |
US8060866B2 (en) * | 2007-10-19 | 2011-11-15 | GE Intelligent Platforms, Inc | Systems and methods for debugging multiple workflow instances |
US8484623B2 (en) | 2008-03-26 | 2013-07-09 | Avaya, Inc. | Efficient program instrumentation |
US8566796B2 (en) * | 2008-04-04 | 2013-10-22 | Sas Institute Inc. | Systems and methods for interactions with software probes |
US7886021B2 (en) * | 2008-04-28 | 2011-02-08 | Oracle America, Inc. | System and method for programmatic management of distributed computing resources |
US8543998B2 (en) * | 2008-05-30 | 2013-09-24 | Oracle International Corporation | System and method for building virtual appliances using a repository metadata server and a dependency resolution service |
US8423961B2 (en) | 2008-06-06 | 2013-04-16 | Microsoft Corporation | Simulating operations through out-of-process execution |
US8312434B2 (en) | 2008-07-02 | 2012-11-13 | International Business Machines Corporation | Finding the source statement of the definition of a storage location |
US8799884B2 (en) | 2008-08-13 | 2014-08-05 | Qualcomm Incorporated | Software application performance enhancement |
US8291261B2 (en) * | 2008-11-05 | 2012-10-16 | Vulcan Technologies Llc | Lightweight application-level runtime state save-and-restore utility |
US8745596B2 (en) * | 2009-02-05 | 2014-06-03 | Microsoft Corporation | Program debugging with dynamically inserted instrumentation |
GB0908913D0 (en) | 2009-05-26 | 2009-07-01 | Univ Dundee | Software development tool |
US8656222B2 (en) * | 2009-07-30 | 2014-02-18 | Vmware, Inc. | Method and system for recording a selected computer process for subsequent replay |
US8402446B2 (en) | 2009-11-30 | 2013-03-19 | International Business Machines Corporation | Associating probes with test cases |
US8706844B2 (en) * | 2009-12-02 | 2014-04-22 | Sap Ag | Provision of troubleshooting tools in a network system |
US20110137820A1 (en) | 2009-12-09 | 2011-06-09 | Reisbich Julia | Graphical model-based debugging for business processes |
US8595709B2 (en) * | 2009-12-10 | 2013-11-26 | Microsoft Corporation | Building an application call graph from multiple sources |
US8522176B2 (en) | 2010-05-11 | 2013-08-27 | Synopsys, Inc. | Method of recording and replaying call frames for the testbench |
US8752017B2 (en) | 2010-05-17 | 2014-06-10 | Salesforce.Com, Inc. | Method and system for remote debug protocol proxying for production debugging; selective session and user routing for debugging in multi-tenant cloud computing infrastructure |
US8856742B2 (en) * | 2010-06-11 | 2014-10-07 | International Business Machines Corporation | Distributed debugging |
US8468124B2 (en) | 2010-06-30 | 2013-06-18 | International Business Machines Corporation | Debugging workflows |
US8671393B2 (en) * | 2010-10-21 | 2014-03-11 | International Business Machines Corporation | Collaborative software debugging in a distributed system with client-specific dynamic breakpoints |
US8495590B2 (en) * | 2011-06-10 | 2013-07-23 | International Business Machines Corporation | User-specific software debugging |
US20120324236A1 (en) * | 2011-06-16 | 2012-12-20 | Microsoft Corporation | Trusted Snapshot Generation |
US10229031B2 (en) | 2011-07-15 | 2019-03-12 | Microsoft Technology Licensing, Llc. | Debugging inline functions in optimized code |
US9645913B2 (en) * | 2011-08-03 | 2017-05-09 | Daniel Geist | Method and apparatus for debugging programs |
US8943480B2 (en) * | 2011-12-13 | 2015-01-27 | International Business Machines Corporation | Setting breakpoints in optimized instructions |
US8656361B2 (en) | 2012-02-06 | 2014-02-18 | Microsoft Corporation | Debugging code visually on a canvas |
US9111033B2 (en) * | 2012-04-17 | 2015-08-18 | International Business Machines Corporation | Compiling source code for debugging with user preferred snapshot locations |
US8910126B2 (en) * | 2012-04-18 | 2014-12-09 | International Business Machines Corporation | Compiling source code for debugging with variable value restoration based on debugging user activity |
US20130318504A1 (en) | 2012-05-25 | 2013-11-28 | Johan Eker | Execution Breakpoints in an Integrated Development Environment for Debugging Dataflow Progrrams |
US8856600B2 (en) * | 2012-06-21 | 2014-10-07 | Breakingpoint Systems, Inc. | JTAG-based programming and debug |
US9009679B2 (en) * | 2012-06-28 | 2015-04-14 | International Business Machines Corporation | Determining snapshot placement |
US9459989B2 (en) | 2012-07-26 | 2016-10-04 | Adobe Systems Incorporated | Method and apparatus for reverse debugging source code using causal analysis |
US8909990B2 (en) | 2012-08-04 | 2014-12-09 | Microsoft Corporation | Historical software diagnostics using lightweight process snapshots |
US9710357B2 (en) * | 2012-08-04 | 2017-07-18 | Microsoft Technology Licensing, Llc | Function evaluation using lightweight process snapshots |
US20140068569A1 (en) | 2012-08-31 | 2014-03-06 | Microsoft Corporation | User directed profiling |
US9110682B2 (en) | 2012-10-19 | 2015-08-18 | Microsoft Technology Licensing Llc | State machine control of a debugger |
US9489283B1 (en) | 2013-03-14 | 2016-11-08 | The Mathworks, Inc. | Unified hardware and software debugging |
US9244810B2 (en) | 2013-05-23 | 2016-01-26 | Nvidia Corporation | Debugger graphical user interface system, method, and computer program product |
US10127138B2 (en) * | 2013-06-06 | 2018-11-13 | Microsoft Technology Licensing, Llc. | Debugging native code by transitioning from execution in native mode to execution in interpreted mode |
US9477575B2 (en) | 2013-06-12 | 2016-10-25 | Nvidia Corporation | Method and system for implementing a multi-threaded API stream replay |
US9465721B2 (en) * | 2013-08-19 | 2016-10-11 | Microsoft Technology Licensing, Llc | Snapshotting executing code with a modifiable snapshot definition |
US20150052400A1 (en) * | 2013-08-19 | 2015-02-19 | Concurix Corporation | Breakpoint Setting Through a Debugger User Interface |
US9612939B2 (en) | 2014-10-29 | 2017-04-04 | Microsoft Technology Licensing, Llc. | Diagnostic workflow for production debugging |
US9632915B2 (en) | 2014-10-29 | 2017-04-25 | Microsoft Technology Licensing, Llc. | Historical control flow visualization in production diagnostics |
-
2013
- 2013-11-18 US US14/083,157 patent/US10289411B2/en active Active
-
2014
- 2014-11-14 CN CN201480062946.9A patent/CN105745626B/zh active Active
- 2014-11-14 WO PCT/US2014/065592 patent/WO2015073761A2/en active Application Filing
- 2014-11-14 EP EP14805759.9A patent/EP3072051B1/en active Active
-
2019
- 2019-01-14 US US16/247,258 patent/US10795673B2/en active Active
-
2020
- 2020-05-11 US US16/871,520 patent/US10996947B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102129408A (zh) * | 2011-04-14 | 2011-07-20 | 电子科技大学 | 一种基于记录回放技术的嵌入式软件调试装置和方法 |
Non-Patent Citations (1)
Title |
---|
A Development of Remote Tracepoint Debugger for Run-time Monitoring and Debugging of Timing Constraints on Qplus-P RTOS;Kwangyong Lee et al;《Proceedings of the IEEE Workshop on Software Technologies for Future Embedded Systems》;20031231;参见第1-4页,摘要、第3-5节 |
Also Published As
Publication number | Publication date |
---|---|
WO2015073761A2 (en) | 2015-05-21 |
WO2015073761A3 (en) | 2015-07-09 |
US20190146785A1 (en) | 2019-05-16 |
EP3072051A2 (en) | 2016-09-28 |
CN105745626A (zh) | 2016-07-06 |
EP3072051B1 (en) | 2019-06-19 |
US20150143344A1 (en) | 2015-05-21 |
US10996947B2 (en) | 2021-05-04 |
US10795673B2 (en) | 2020-10-06 |
US20200272457A1 (en) | 2020-08-27 |
US10289411B2 (en) | 2019-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105745626B (zh) | 基于进程快照的诊断生产应用 | |
CN104520819B (zh) | 使用轻量进程快照的历史软件诊断 | |
CN107111544B (zh) | 生产诊断中的历史控制流可视化 | |
US9471474B2 (en) | Cloud deployment infrastructure validation engine | |
Zhou et al. | AccMon: Automatically detecting memory-related bugs via program counter-based invariants | |
CN104520820B (zh) | 使用轻量进程快照的功能评估 | |
Bhatia et al. | Lightweight, high-resolution monitoring for troubleshooting production systems | |
US10268558B2 (en) | Efficient breakpoint detection via caches | |
Wang et al. | Hang analysis: fighting responsiveness bugs | |
US11030075B2 (en) | Efficient register breakpoints | |
Pan et al. | Blind Men and the Elephant: Piecing together Hadoop for diagnosis | |
Mi et al. | Automatic detecting performance bugs in cloud computing systems via learning latency specification model | |
Vogt | Efficient High Frequency Checkpointing for Recovery and Debugging | |
Ma | Effective and Efficient Computation System Provenance Tracking | |
Muench | SORBONNE UNIVERSITE | |
Rezazadeh | Performance Analysis of Complex Multi-Thread Applications Through Critical Path Analysis | |
Richard | Solaris" Performance And Tools: Dtrace And Mdb Techniques For Solaris 10 And Opensolaris | |
Greathouse | Hardware Mechanisms for Distributed Dynamic Software Analysis | |
Zamfir | Execution Synthesis: A Technique for Automating the Debugging of Software | |
Subhraveti | Record and vPlay: Problem Determination with Virtual Replay Across Heterogeneous Systems | |
Akritidis et al. | thANks tO Our summArIzers | |
Smith | Automated slicing methods for large event traces |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |