CN107077414B - 用于生产调试的诊断工作流程 - Google Patents
用于生产调试的诊断工作流程 Download PDFInfo
- Publication number
- CN107077414B CN107077414B CN201580056568.8A CN201580056568A CN107077414B CN 107077414 B CN107077414 B CN 107077414B CN 201580056568 A CN201580056568 A CN 201580056568A CN 107077414 B CN107077414 B CN 107077414B
- Authority
- CN
- China
- Prior art keywords
- diagnostic
- debugger
- breakpoint
- exception
- conditional
- 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
Images
Classifications
-
- 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
-
- 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/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
-
- 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/3664—Environments for testing or debugging software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
诊断工作流文件可用于在调试器执行时没有与调试器进行用户交互的情况下,控制调试器将来执行的诊断操作。诊断工作流文件由调试器在调试会话期间使用。调试器执行由诊断工作流文件指引的动作以模拟交互式实时调试会话。诊断工作流文件可以包括条件诊断操作,其执行取决于调试会话中的程序变量,诊断变量和诊断原语的状态。
Description
背景技术
传统的软件诊断工具通常在实时(live)运行的过程或保存的过程状态上操作。例如,实时调试器在正在执行的过程上运行。在保存的过程状态上执行的调试器不被附加到正在执行的过程,并在正在被调试的过程执行时通过处理收集的历史日志文件或过程转储(dump)文件来运行。这种类型的调试器与正在被调试的过程分开执行,通常在正在被调试的过程被完成执行之后的某个时间。调试实时过程提供很少或没有关于过程如何达到其当前状态的历史上下文。调试过程转储文件和/或日志文件通常是耗时和迭代的。
发明内容
诊断工具可以在由诊断工作流制品指引的过程上执行活动类型调试,而不停止该过程。诊断工具可以以与用于实时调试的方式类似的方式执行条件或无条件断点处理和条件或无条件异常处理,但是不具有实时调试通常对过程的性能影响。如本文所使用的“生产”或“生产环境”是指所使用的软件已经从开发和/或测试阶段退出并且是“正在生产”的环境,即,用于执行实际工作而不是开发和/或测试。诊断工作流文件中提供的指令可以用于自动控制调试器的未来诊断操作(当调试器执行时,用户不必与调试器交互)。可以基于正在执行的应用的当前状态有条件地执行在诊断工作流文件中指定的诊断操作。“当前状态”可以包括诊断原语(primitive)的状态。诊断原语是影响诊断工具状态的任何操作,例如但不限于创建断点,移除断点,禁用断点,改变断点的条件,基于异常的类型启用异常,基于异常的类型禁用异常,基于与异常相关联的调用堆栈来调整异常,步进操作(诸如步入到代码中,跳过指令等,以及步出代码)。“当前状态”可以包括各种变量的状态,包括但不限于程序变量和诊断变量。程序变量指被调试程序使用的那些变量。诊断变量(例如,保存特定断点被命中的次数或者指定类型的异常是否被抛出的变量的值,或者异常是否在指定的调用堆栈被抛出)指由调试器用于调试的那些变量。
诊断工作流文件可以从集成开发环境(IDE)或其他开发环境生成。诊断工作流可以使得诊断动作能够在程序执行时自动执行(在没有人工干预的情况下)。诊断操作包括但不限于以下操作:当指定的事件发生时,可以启用断点,当指定的事件发生时可以禁用断点,当指定类型的异常首次被抛出时可以启用程序处理中的断点或转储生成,当异常在特定调用堆栈或者特定行首次被抛出时,可以启用程序处理中的中断或转储生成,异常的类型可以用作中断或转储生成的次要条件,当发生上述条件之一时可以启用诊断记录,和/或当发生以下情况之一时可以禁用诊断记录:可以执行步进操作,可以评估变量,可以将变量写入日志等。也就是说,当用户控制调试器时,用户将能够直接执行的由诊断工具支持的任何动作可以由工作流文件自动驱动执行。
可以将诊断工作流文件提供给生产或非生产环境中的调试会话。诊断工作流可以应用于生产环境中的实时调试会话。工作流中描述的动作可以在没有用户交互的情况下动态地控制调试器或其他诊断工具。诊断工作流中指定的条件的状态可以在每个生成的诊断制品中可见。诊断制品可以包括实时调试会话,轻量级过程快照或从实时过程或轻量级过程快照生成的过程转储。
提供本发明内容以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
附图说明
在附图中:
图1示出了根据本文描述的主题的各方面的用于生成和/或执行诊断工作流的系统100的示例;
图2示出了根据本文公开的主题的方面的包括生成诊断工作流和/或执行诊断工作流的方法的示例的方法200的示例;
图3是根据本文公开的主题的各方面的计算环境的示例的框图;和
图4是根据本文所公开的主题的各方面的集成开发环境的示例的框图。
具体实施方式
概述
因为用户直接与调试器交互(控制调试器的动作),实时调试器可以向用户提供对调试动作的细粒度控制。例如,在实时调试中,用户可以在源代码中插入断点。当在程序的执行期间遇到断点时,通常停止目标过程,并且将过程的控制交给用户。然后,用户可以执行各种调试操作,包括启用或禁用断点,检查变量值,检查调用堆栈等。当用户已经完成他的调试动作时,他可以指引处理器恢复应用的执行。当调试由于对用户的影响而不合理停止的应用(例如,在生产环境中运行的应用)时,用户必须猜测他或她将需要收集什么信息并将日志语句放入至应用中,以便收集该信息。通常,此历史信息是离线评估的。
根据本文描述的主题的一些方面,在调试器正在被执行时,在诊断工作流文件中提供的指令可以用于在没有用户与调试器的交互的情况下控制调试器的未来诊断操作。可以有条件地执行诊断工作流文件中的指令。诊断工作流文件中的指令可以基于以下状态的任何组合而有条件地被执行:一个或多个程序变量,一个或多个诊断原语和/或一个或多个诊断变量。程序变量是由程序所需的变量。诊断变量是由诊断工具所需的变量。确定诊断工作流文件中的指令是否被执行的条件可以包括指定程序变量的值(例如,“如果程序中的整数变量‘i’具有值13,则执行动作”)。条件也可以基于状态,例如“如果执行线程被命名为‘squid’、或过程的名称是‘clam’,则执行动作”。该条件可以基于一个或多个诊断原语的状态。诊断原语可以是影响调试器的状态的任何操作,包括但不限于创建,移除,启用或禁用断点,改变断点的条件(例如,将断点从启用改变为禁用,或改变其上的条件执行断点),通过类型启用或禁用异常,通过调用堆栈调节异常,或调试器操作(例如调用步进操作(步入,跳过,步出))。该条件可以基于诊断变量的状态,例如但不限于,例如,指定特定断点被命中的次数的变量的值,或者如果指定类型的异常已经被抛出,或者如果异常已经在指定的调用堆栈被抛出。
条件诊断指令可以以任何合适的方式被动态地插入运行的应用中。根据本文描述的主题的一些方面,可以通过例如将功能调用注入到快照运行时,来动态地将条件诊断指令插入运行的应用中。注入的断点的每个实例可以被分配在运行时唯一的标识符。当命中断点时,唯一标识符可以被传递到诊断运行时。工作流执行环境然后可以在诊断工作流文件中找到特定断点并应用在那里指定的动作。
被插入到执行的应用中的条件或无条件断点和/或条件或无条件异常处理可以是非停止(non-stopping)。当执行仪器化的代码(instrumented code)并且遇到非停止断点时,代替停止过程并将控制转交给用户,可以在没有用户交互的情况下执行由诊断工作流文件的内容所指引的附加处理。可以收集诊断信息。收集的诊断信息可以包括过程状态的轻量级快照。
用于生产调试的诊断工作流程
可以创建包括可以在运行的应用中有条件地或无条件地执行的诊断指令的诊断工作流文件。诊断工作流文件可以用于指定将被插入到执行代码中的条件或无条件断点处理,以及以类似于用于实况调试的方式执行的条件或无条件异常处理。代替启动实时调试,可以将断点绑定位置的列表,异常状态和条件的编译版本导出到诊断工作流文件。诊断工作流文件可以应用于正在运行的应用(例如,使用代码注入技术,代码重写机制等)。应用可以在生产或非生产(例如,开发,测试,分级等)环境中执行。
可以在诊断工作流文件中指定包括用于一个或多个唯一标识的断点的一个或多个指令的工作流。可以在诊断工作流文件中指定包括用于一种或多种类型的异常的一个或多个指令的工作流。异常可以通过如下来识别:例如异常类型(或整数代码,取决于异常的类型),异常从中被抛出的调用堆栈,正在捕获异常的catch块等等。在已经指定要在诊断会话中发生的处理之后,根据本文描述的主题的一些方面,可以编译诊断工作流文件。当执行目标应用时,诊断工作流文件可以由诊断工作流引擎消费。
诊断工作流引擎可以按照诊断工作流文件的指引执行调试操作。诊断工作流引擎可以根据工作流中的描述来初始化用于每个生产诊断事件的状态(例如,启用或禁用)。例如,如果在另一个事件发生时启用断点(例如,断点1),则断点1可以被初始化为“禁用”状态。可以使用诸如常规语言运行时(CLR)中间语言(IL)重写简档器(profiler)或任何其它合适的代码重写技术的运行时简档器,将断点和异常处理程序(handler)注入到过程中。这允许诊断工具捕获各种事件,评估执行条件,并最终触发事件的处理程序。指定的处理可以包括创建快照。快照可以是轻量级过程快照。快照可以驻留在存储器中,并且可以由诸如调试器的诊断工具访问。快照可以被序列化到存储器转储。内存转储可以由诊断工具脱机使用。在运行时,随着在诊断工作流文件中指定的每个事件发生在计算设备上,由仪器引擎注入的仪器可以调用工作流引擎以执行诊断工作流文件中所描述的动作,诸如启用或禁用一个或多个不同的断点,行走(walk)调用堆栈,类型检查异常,并且可以基于指定的处理的结果执行一个或多个动作。
图1示出了根据本文描述的主题的各方面的可以基于诊断工作流文件执行调试的系统100的示例。系统100的全部或部分可以驻留在一个或多个计算机或计算设备上,例如下面参照图3描述的计算机。系统100或其部分可以作为独立系统或作为插件或插件提供。系统100可以完全地或部分地在诸如IDE 104的IDE中执行,或者可以完全地或部分地在IDE外部执行。IDE 104可以是诸如参考图4所描述的IDE的IDE,或可以是任何其他IDE。系统100的全部或部分可以实现为插件或附加组件。
系统100或其部分可以包括从服务(例如,在云中)获得的信息,或可以在云计算环境中操作的信息。云计算环境可以是其中计算服务不被拥有但是按需提供的环境。例如,信息可以驻留在联网云中的多个设备上和/或数据可以存储在云内的多个设备上。
系统100可以包括一个或者多个计算设备,注入例如计算设备102。想到的计算设备包括但不限于台式计算机,平板计算机,膝上型计算机,笔记本计算机,个人数字助理,智能电话,膝上型计算机,膝上型计算机,蜂窝电话,移动电话,服务器,虚拟机,包括数据库的设备,防火墙等。诸如计算设备102的计算设备可以包括诸如处理器142等的一个或多个处理器以及诸如与一个或多个处理器通信的存储器144的存储器。
系统100可以包括程序模块中的任何一个或任何组合,包括:仪器(instrumentation)引擎,例如仪器引擎114,诊断工作流引擎,例如工作流引擎116和/或调试器或诊断工具,例如调试器124。仪器引擎(诸如仪器引擎114)可以包括诸如工作流引擎116的诊断工作流引擎。诊断工作流引擎可以在仪器引擎外部。系统100可以包括诸如生产运行时环境106的执行环境。备选地,执行环境可以是开发,分级或测试环境。系统100可以包括第二环境,诸如但不限于图1中由IDE 104表示的开发环境。
根据本文描述的主题的一些方面,响应于接收诸如源代码128的输入可以创建可以由调试器124而创建的诊断工作流文件,例如诊断工作流文件120。诊断工作流文件可以用于在调试器执行时没有与调试器进行用户交互的情况下,控制调试器的未来诊断操作。可以基于正在执行的应用的当前状态有条件地执行在诊断工作流文件中指定的诊断操作。“当前状态”可以包括诊断原语的状态(例如,是否已经命中了某个断点,是否已经抛出了异常)和各种变量的状态(例如,保存如下的变量值特定断点被命中的次数,或者是否已经抛出指定类型的异常,或者是否异常已经在指定的调用堆栈被抛出)或其组合。诊断原语可以是影响调试器状态的任何操作,包括但不限于创建,移除或禁用断点,改变断点的条件(例如,从启用到禁用或从禁用到启用),按照类型启用或禁用异常,基于异常被抛出的调用堆栈调整异常,或调试器操作,例如调取步骤操作(步入,跳过,步出)等。
可以编译诊断工作流文件120。可以将诊断工作流文件120或编译的诊断工作流文件提供给仪器引擎114。仪器引擎114可以动态地在不取消或停止执行过程108的情况下,来将原始功能110仪器化以创建仪器化的功能112。下一次调取功能时,可以执行仪器化的功能112而不是原始功能110。根据这里描述的主题的一些方面,原始功能110被重写以使用代码重写机制来创建仪器化的功能112。根据本文描述的主题的一些方面,原始功能110被重写以由仪器引擎114创建仪器化的功能112。
诸如工作流引擎116的诊断工作流引擎可以执行在诊断工作流文件120中指定的处理。例如,如果已经遇到第一断点(断点A),则诊断工作流引擎可以启用第二断点(断点B)。如果抛出指定类型的异常,则诊断工作流引擎可以启用特定断点。如果指定类型的异常在指定的调用堆栈被抛出,则诊断工作流引擎可以启用特定断点。如果第一条件断点(断点A)没有被命中(因为例如不满足第一条件断点所要求的条件),则诊断工作流引擎可以启用第二条件断点(断点B)。如果抛出指定类型的异常,则诊断工作流引擎可以禁用特定断点。如果在与第一断点(例如,断点A)不同的会话或过程中遇到第二断点,则诊断工作流引擎可以禁用第二断点(例如,断点B)。如果代码段花费比阈值更长来执行(例如,代码段可以取决于影响性能的事件),则诊断工作流引擎可以启用特定断点。如果已经命中指定的断点,则诊断工作流引擎可以启用在指定类型的第一机会异常处创建转储。如果已经命中了特定的指定断点,则诊断工作流引擎可以禁止在特定类型的第一机会异常处创建转储。如果在与第二标识的断点相同的线程上遇到异常,则诊断工作流引擎可以启用特定断点。诸如诊断工作流引擎116的诊断工作流引擎可以收集和保持和/或保存诸如调试信息118的调试信息(调试制品)。
图2示出了根据本文描述的主题的各方面的用于创建和执行诊断工作流文件的方法200的示例。另外,图2中所示的系统可以由诸如但不限于关于图2描述的系统来实施。虽然方法200描述了在序列中执行的一系列步骤或操作,但是应当理解,方法200不受所描绘的序列的顺序的限制。例如,一些操作可以按与所描述的顺序不同的顺序发生。另外,一个操作可以与另一操作同时发生。在一些情况下,不是执行所描述的所有操作。
在操作206,可以创建如上面更充分描述的诊断工作流文件。可以编译诊断工作流文件。在操作208,可以将诊断工作流文件发送到调试环境。可以从开发,测试或分级计算机器接收诊断工作流文件。诊断工作流文件可以由同一计算设备或另一计算设备上的生产运行时环境接收。
在操作210,可以将功能仪器化以产生在下一次调用功能时执行的仪器化的功能。该功能可以由加载到连接到计算机器的处理器的存储器中的一个或多个程序模块来仪器化。在操作212,可以执行仪器化的功能。仪器化的功能可以由计算设备的处理器执行。仪器化的功能可以由确定状态的诊断工作流引擎处理,并且可以执行诊断工作流文件中指定的诊断操作,如上面更充分描述的。在操作214,可以收集调试信息(例如,诊断制品)。在操作216,可以提供工作流状态。工作流状态可以被提供为显示,报告,写入存储介质或以任何手段使得通过本领域技术人员已知。
根据本文描述的主题的各方面,计算机系统可以包括一个或多个处理器,连接到一个或多个处理器的存储器,以及诊断工具。诊断工具可以包括一个或多个程序模块,当加载到存储器中时可以使得一个或多个处理器创建诊断工作流文件。诊断工作流文件可以自动控制调试器的未来诊断操作(在调试器执行时没有用户与调试器交互的情况下)。诊断工作流文件可以包括一个或多个诊断操作。诊断工作流文件可以基于正在执行的程序的当前状态来指定诊断操作是有条件的。当前状态可以包括一个或多个诊断原语的状态。当前状态可以包括一个或多个诊断变量的状态。当前状态可以包括一个或多个程序变量的状态。条件诊断操作的执行可以取决于一个或多个诊断原语,一个或多个程序变量和一个或多个诊断变量的状态的组合。
使用诸如上述系统的系统的方法可以包括诸如由计算设备的处理器接收诊断工作流文件的操作。诊断工作流文件可以包括将被执行的一个或多个条件诊断操作,其中取决于程序变量,诊断原语和诊断变量中的一个或多个的当前状态,来执行条件诊断操作。可以确定一个或多个程序变量,诊断原语和/或诊断变量的当前状态。响应于确定满足条件,可以收集诊断信息。诊断信息可以通过制作过程数据的快照来收集。可以显示诊断信息的状态(例如,向用户)。诊断原语可以是用于如下的指令:创建断点,删除断点,启用断点,禁用断点,改变断点条件,根据异常类型启用异常,根据类型禁用异常的指令异常,根据异常被抛出的调用堆栈调整异常,执行调试操作(诸如步骤操作)。可以确定诊断变量的状态。诊断变量可以是在诊断工作流文件中的调试操作中使用的变量。
计算机可读存储介质可以包括计算机可读指令,所述计算机可读指令在被执行时使得计算设备的一个或多个处理器使用诊断工作流文件中提供的指令,来自动控制目标过程中的仪器化的可执行体的诊断操作(过程调试)。指令可以使处理器收集诊断信息。计算机可读存储介质可以包括收集将被提供给诸如调试器的诊断工具的诊断信息的其它计算机可读指令。计算机可读存储介质可以包括其他计算机可读指令,其在被执行时将仪器化的代码插入到功能中以在目标过程执行时生成仪器化的功能。计算机可读存储介质可以包括在被执行时确定诊断原语的状态的其他计算机可读指令。诊断原语可以是以下操作:创建断点,删除断点,启用断点,禁用断点,改变断点的条件,如果是指定类型则启用异常,如果是指定类型则禁用异常,根据异常是否在执行步进操作的指定调用堆栈被抛出来调节异常。计算机可读存储介质可以包括其它计算机可读指令,其在被执行时确定用于执行调试操作的诊断变量的状态。计算机可读存储介质可以包括其他计算机可读指令,其在被执行时确定诊断原语的当前状态。计算机可读存储介质可以包括其他计算机可读指令,其在被执行时确定在诊断工作流文件中引用的诊断变量的状态。
合适的计算环境的示例
为了提供本文公开的主题的各个方面的上下文,图3和以下讨论旨在提供其中可以实现本文公开的主题的各种实施例的合适的计算环境510的简要一般描述。尽管在由一个或多个计算机或其他计算设备执行的诸如程序模块的计算机可执行指令的一般上下文中描述了本文公开的主题,但是本领域技术人员将认识到,本文公开的主题的部分也可以结合其他程序模块和/或硬件和软件的组合来实现。通常,程序模块包括执行特定任务或实现特定数据类型的例程,程序,对象,物理制品,数据结构等。通常,在各种实施例中,可以根据需要组合或分布程序模块的功能。计算环境510仅是合适的操作环境的一个示例,并且不旨在限制本文所公开的主题的使用或功能的范围。
参考图3,描述了计算机512形式的计算设备。计算机512可以包括至少一个处理单元514,系统存储器516和系统总线518。至少一个处理单元514可以执行在诸如但不限于系统存储器516的存储器中存储的指令。处理单元514可以是各种可用处理器中的任何一种。例如,处理单元514可以是图形处理单元(GPU)。指令可以是用于实现由上述一个或多个组件或模块执行的功能的指令或用于实现上述方法中的一个或多个的指令。双微处理器和其他多处理器架构也可以用作处理单元514。计算机512可以在支持在显示屏上渲染图形的系统中使用。在另一示例中,计算设备的至少一部分可以在包括图形处理单元的系统中使用。系统存储器516可以包括易失性存储器520和非易失性存储器522。非易失性存储器522可以包括只读存储器(ROM),可编程ROM(PROM),电可编程ROM(EPROM)或闪存。易失性存储器520可以包括可以用作外部高速缓存存储器的随机存取存储器(RAM)。系统总线518将包括系统存储器516的系统物理制品耦合到处理单元514。系统总线518可以是几种类型中的任何一种,包括存储器总线,存储器控制器,外围总线,外部总线或局部总线,并且可以使用任何各种可用的总线架构。计算机512可以包括可由处理单元514通过系统总线518访问的数据存储。数据存储可以包括用于图形渲染的可执行指令,3D模型,材质,纹理等。
计算机512通常包括各种计算机可读介质,诸如易失性和非易失性介质,可移动和不可移动介质。计算机可读介质可以以用于存储诸如计算机可读指令,数据结构,程序模块或其他数据的信息的任何方法或技术来实现。计算机可读介质包括计算机可读存储介质(也称为计算机存储介质)和通信介质。计算机存储介质包括物理(有形)介质,例如但不限于RAM,ROM,EEPROM,闪存或其他存储器技术,CDROM,数字多功能盘(DVD)或其他光盘存储器,磁带盒,磁带,磁盘存储或可存储所需数据且可由计算机512访问的其它磁存储设备。通信介质包括诸如但不限于通信信号,调制载波或可以使用的任何其它无形介质的介质以传送期望的信息并且可以由计算机512访问。
应当理解,图3描述了可以充当用户和计算机资源之间的中介的软件。该软件可以包括可以存储在磁盘存储器524上并且可以分配计算机512的资源的操作系统528。磁盘存储器524可以是硬盘驱动器,其通过不可移除存储器接口(诸如接口526)连接到系统总线518。系统应用530利用操作系统528通过存储在系统存储器516或磁盘存储器524中的程序模块532和程序数据534来管理资源。应当理解,计算机可以利用各种操作系统或操作系统的组合。
用户可以通过输入设备536将命令或信息输入到计算机512中。输入设备536包括但不限于诸如鼠标,轨迹球,触笔,触摸板,键盘,麦克风之类的指向设备,语音识别和姿势识别系统等。这些和其他输入设备经由接口端口538通过系统总线518连接到处理单元514。接口端口538可以表示串行端口,并行端口,通用串行总线(USB)等。输出设备540可以使用与输入设备相同类型的端口。提供输出适配器542以说明存在一些输出设备540,如需要特定适配器的监视器,扬声器和打印机。输出适配器542包括但不限于提供输出设备540和系统总线518之间的连接的视频和声卡。其他设备和/或系统或设备(例如远程计算机544)可以提供输入和输出能力。
计算机512可以使用到一个或多个远程计算机(诸如远程计算机544)的逻辑连接在联网环境中操作。远程计算机544可以是个人计算机,服务器,路由器,网络PC,对等设备或其他常规网络节点,并且通常包括相对于计算机512在上面描述的许多或所有元件,尽管在图1中仅示出了存储器存储设备546。远程计算机544可以经由通信连接550逻辑地连接。网络接口548包括诸如局域网(LAN)和广域网(WAN)的通信网络,但是也可以包括其他网络。通信连接550是指用于将网络接口548连接到总线518的硬件/软件。通信连接550可以在计算机512的内部或外部,并且包括内部和外部技术,例如调制解调器(电话,电缆,DSL和无线)和ISDN适配器,以太网卡等。
应当理解,所示的网络连接仅是示例,并且可以使用在计算机之间建立通信链路的其他手段。本领域的普通技术人员可以理解,计算机512或其他客户端设备可以被部署为计算机网络的一部分。在这点上,本文所公开的主题可以涉及具有任何数量的存储器或存储单元以及在任何数量的存储单元或卷上发生的任何数量的应用和过程的任何计算机系统。这里公开的主题的各方面可以应用于如下环境,该环境具有部署在网络环境中的服务器计算机和客户端计算机,具有远程或本地存储。本文所公开的主题的各方面还可以应用于具有编程语言功能,解释和执行能力的独立计算设备。
本文所描述的各种技术可结合硬件或软件或在适当时与两者的组合来实现。因此,本文所述的方法和装置或其某些方面或部分可以采取体现在诸如软盘,CD-ROM,硬盘驱动器或任何其它机器可读介质的有形介质中的程序代码(即指令),其中当程序代码被加载到诸如计算机的机器中并由机器执行时,机器变成用于实践本文所公开的主题的各方面的装置。如本文所使用的,术语“机器可读存储介质”将被理解为排除提供(即,存储和/或传输)任何形式的传播信号的任何机制。在可编程计算机上执行程序代码的情况下,计算设备通常将包括处理器,处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入设备,以及至少一个输出设备。可以利用例如通过使用数据处理API等等来利用域特定的编程模型方面的创建和/或实现的一个或多个程序可以以高级过程或面向对象的编程语言来实现,用于与计算机系统通信。然而,如果需要,程序可以以汇编或机器语言实现。在任何情况下,语言可以是编译或解释语言,并且与硬件实现结合。
图4示出了集成开发环境(IDE)600和常规语言运行时环境602。IDE 600可以允许用户(例如开发者,程序员,设计者,编码器等)设计,编码,编译,测试,运行,编辑,在计算机系统中调试或构建程序,程序集,网站,web应用和web服务。软件程序可以包括用一种或多种源代码语言(例如VisualBasic,VisualJ#,C++,C#,J#,JavaScript,APL,COBOL,Pascal,Eiffel,Haskell,ML,Oberon,Perl,Python,Scheme,Smalltalk等)。IDE 600可以提供本地代码开发环境,或者可以提供在虚拟机上运行的托管代码开发,或者可以提供其组合。IDE600可以使用.NET框架提供托管代码开发环境。可以使用语言特定源编译器620从源代码组件610和本地代码组件611创建中间语言组件650,并且在执行应用时使用中间语言编译器660(例如,即时(JIT)编译器)从中间语言组件650创建本地代码组件611(例如,机器可执行指令)。也就是说,当IL应用被执行时,它被编译同时被执行为用于正被执行的平台的适当的机器语言,从而使代码在多个平台上可移植。或者,在其它实施例中,程序可被编译为适于其预期平台的本机代码机器语言(未示出)。
用户可以经由IDE 600中的用户界面640和源代码编辑器651,根据已知的软件编程技术和与特定源语言相关联的特定逻辑和语法规则来创建和/或编辑源代码组件。之后,源代码组件610可以经由源编译器620来编译,由此可以创建程序的中间语言表示,诸如组件630。组件630可以包括中间语言组件650和元数据642。应用设计可以在部署之前被验证。
尽管已经以结构特征和/或方法动作专用的语言描述了主题,但是应当理解,所附权利要求中定义的主题不一定限于上述具体特征或动作。而是,上面描述的具体特征和动作被公开为实现权利要求的示例形式。
Claims (20)
1.一种系统,包括:
至少一个处理器;
连接到所述至少一个处理器的存储器;以及
诊断工具,包括:
加载到所述存储器中的至少一个程序模块,所述至少一个程序模块创建诊断工作流文件,所述诊断工作流文件包括指令,所述指令用于在调试器执行时,在没有与所述调试器进行用户交互的情况下,控制所述调试器的未来诊断操作,所述指令包括至少一个条件诊断操作,以及所述至少一个条件诊断操作被配置以插入由所述调试器调试的应用中。
2.根据权利要求1所述的系统,其中所述诊断工作流文件包括至少一个条件诊断操作。
3.根据权利要求1所述的系统,其中所述诊断工作流文件包括至少一个条件诊断操作,其中所述条件诊断操作是基于执行程序的当前状态被执行的。
4.根据权利要求3所述的系统,其中当前状态包括至少一个诊断原语的状态。
5.根据权利要求4所述的系统,其中当前状态包括至少一个诊断变量的状态。
6.根据权利要求3所述的系统,其中当前状态包括至少一个程序变量的状态。
7.根据权利要求1所述的系统,其中所述条件诊断操作是基于诊断原语、程序变量和诊断变量的当前状态的组合被执行的。
8.一种方法,包括:
由计算设备的处理器接收诊断工作流文件,所述诊断工作流文件包括指令,所述指令用于在调试器执行时,在没有与所述调试器进行用户交互的情况下,控制所述调试器的未来诊断操作,所述指令包括至少一个条件诊断操作,其中所述条件诊断操作是基于程序变量、诊断原语和用于由所述调试器调试的应用的诊断变量中的至少一个的当前状态被执行的;
向所述应用中插入所述至少一个条件诊断操作;
确定程序变量、诊断原语和诊断变量中的所述至少一个的所述当前状态;以及
针对所述应用收集诊断信息。
9.根据权利要求8所述的方法,还包括:
通过制作过程数据的快照来收集诊断信息。
10.根据权利要求8所述的方法,还包括:
显示诊断信息的状态。
11.根据权利要求8所述的方法,还包括:
确定诊断原语的状态,所述诊断原语包括以下之一:创建断点、移除断点、启用断点、禁用断点、改变断点的条件、按类型启用异常、按类型禁用异常、基于所述异常在其中被抛出的调用堆栈调节所述异常、包括步骤操作的调试器操作。
12.根据权利要求8所述的方法,还包括:
确定诊断变量的状态。
13.根据权利要求12所述的方法,其中诊断变量包括调试中使用的变量。
14.一种设备,包括:
至少一个处理器和存储器;
所述至少一个处理器被配置以:
使用诊断工作流文件中提供的指令来在调试器执行时,在没有与所述调试器进行用户交互的情况下,自动控制目标过程中的仪器化的可执行体的诊断操作,所述指令包括至少一个条件诊断操作,以及所述至少一个条件诊断操作被配置以插入由所述调试器调试的应用中;以及
收集诊断信息。
15.根据权利要求14所述的设备,其中述至少一个处理器还被配置以:
向所述调试器提供所述诊断信息。
16.根据权利要求14所述的设备,其中所述至少一个处理器还被配置以:
将仪器化的代码插入到功能中以在所述目标过程执行时生成仪器化的功能。
17.根据权利要求14所述的设备,其中所述至少一个处理器还被配置以:
确定诊断原语的状态,所述诊断原语包括以下之一:创建断点、移除断点、启用断点、禁用断点、改变断点的条件、按类型启用异常、按类型禁用异常、基于所述异常在其中被抛出的调用堆栈调节所述异常、包括步骤操作的调试器操作。
18.根据权利要求14所述的设备,其中所述至少一个处理器还被配置以:
确定包括在调试中使用的变量的诊断变量的状态。
19.根据权利要求14所述的设备,其中所述至少一个处理器还被配置以:
确定诊断原语的当前状态。
20.根据权利要求14所述的设备,其中所述至少一个处理器还被配置以:
确定在所述诊断工作流文件中引用的诊断变量的状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110096622.9A CN112882925A (zh) | 2014-10-29 | 2015-10-26 | 用于生产调试的诊断工作流程 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/527,568 US9612939B2 (en) | 2014-10-29 | 2014-10-29 | Diagnostic workflow for production debugging |
US14/527,568 | 2014-10-29 | ||
PCT/US2015/057277 WO2016069425A1 (en) | 2014-10-29 | 2015-10-26 | Diagnostic workflow for production debugging |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110096622.9A Division CN112882925A (zh) | 2014-10-29 | 2015-10-26 | 用于生产调试的诊断工作流程 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107077414A CN107077414A (zh) | 2017-08-18 |
CN107077414B true CN107077414B (zh) | 2021-02-09 |
Family
ID=54366546
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110096622.9A Pending CN112882925A (zh) | 2014-10-29 | 2015-10-26 | 用于生产调试的诊断工作流程 |
CN201580056568.8A Active CN107077414B (zh) | 2014-10-29 | 2015-10-26 | 用于生产调试的诊断工作流程 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110096622.9A Pending CN112882925A (zh) | 2014-10-29 | 2015-10-26 | 用于生产调试的诊断工作流程 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9612939B2 (zh) |
EP (1) | EP3213216B1 (zh) |
CN (2) | CN112882925A (zh) |
WO (1) | WO2016069425A1 (zh) |
Families Citing this family (27)
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 |
US10289411B2 (en) | 2013-11-18 | 2019-05-14 | Microsoft Technology Licensing, Llc | Diagnosing production applications |
GB2530050B (en) * | 2014-09-10 | 2021-07-21 | Advanced Risc Mach Ltd | Debugging in a data processing apparatus |
US9612939B2 (en) | 2014-10-29 | 2017-04-04 | Microsoft Technology Licensing, Llc. | Diagnostic workflow for production debugging |
US9946625B2 (en) * | 2015-03-18 | 2018-04-17 | New Iron Group, Inc. | Diagnostic tool and method for efficient software development |
US9672139B2 (en) * | 2015-07-21 | 2017-06-06 | Successfactors, Inc. | Debugging in a production environment |
US9983986B2 (en) | 2015-09-28 | 2018-05-29 | International Business Machines Corporation | Testing code response to injected processing errors |
US10223236B2 (en) * | 2017-02-03 | 2019-03-05 | International Business Machines Corporation | Dynamic crash detection and debugging assistance |
US20180275957A1 (en) * | 2017-03-27 | 2018-09-27 | Ca, Inc. | Assistive technology for code generation using voice and virtual reality |
US10534693B2 (en) | 2017-05-04 | 2020-01-14 | Microsoft Technology Licensing, Llc | Temporary de-optimization of target functions in a cloud debugger |
US10613964B2 (en) * | 2017-05-04 | 2020-04-07 | Microsoft Technology Licensing, Llc | Conditional debugging of server-side production code |
US10394695B2 (en) * | 2017-09-25 | 2019-08-27 | Oracle International Corporation | Method and system for recording and debugging process flows |
US10540253B2 (en) * | 2017-11-30 | 2020-01-21 | International Business Machines Corporation | Breakpoint with specified anchor points |
US10846211B2 (en) * | 2018-03-21 | 2020-11-24 | Microsoft Technology Licensing, Llc | Testing kernel mode computer code by executing the computer code in user mode |
US10817406B2 (en) * | 2018-03-30 | 2020-10-27 | Ab Initio Technology Llc | Debugging an executable control flow graph that specifies control flow |
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 |
CN109032825B (zh) * | 2018-06-06 | 2021-09-14 | 创新先进技术有限公司 | 一种故障注入方法、装置及设备 |
CN109522206B (zh) * | 2018-09-26 | 2023-09-26 | 平安科技(深圳)有限公司 | 异常数据定位方法、装置、计算机设备及存储介质 |
US11188420B2 (en) * | 2020-01-15 | 2021-11-30 | International Business Machines Corporation | Defect resolution in a software solution |
US11474931B2 (en) * | 2020-09-14 | 2022-10-18 | Sap Se | Debugging a cross-technology and cross-environment execution |
US11184463B1 (en) * | 2020-11-11 | 2021-11-23 | International Business Machines Corporation | Interacting with a client system to gather client data to use to diagnose a problem at the client system |
CN112527639A (zh) * | 2020-12-02 | 2021-03-19 | 平安医疗健康管理股份有限公司 | 生产环境下的远程调试方法、装置、计算机设备及存储介质 |
CN112491681B (zh) * | 2020-12-08 | 2023-04-25 | 合众新能源汽车股份有限公司 | 一种汽车总线数据的读取方法和系统 |
CN116090808A (zh) * | 2023-03-06 | 2023-05-09 | 北京神州光大科技有限公司 | 一种rpa断点重建方法、装置、电子设备和介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020087950A1 (en) * | 2000-09-27 | 2002-07-04 | International Business Machines Corporation | Capturing snapshots of a debuggee's state during a debug session |
US20060288332A1 (en) * | 2005-06-21 | 2006-12-21 | Microsoft Corporation | Workflow debugger |
US20070240125A1 (en) * | 2005-10-14 | 2007-10-11 | Oracle International Corporation | Debugging functionality embedded in an application |
Family Cites Families (76)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5450586A (en) | 1991-08-14 | 1995-09-12 | Hewlett-Packard Company | System for analyzing and debugging embedded software through dynamic and interactive use of code markers |
US5621886A (en) | 1995-06-19 | 1997-04-15 | Intel Corporation | Method and apparatus for providing efficient software debugging |
JP2000501542A (ja) | 1997-07-01 | 2000-02-08 | プログレス ソフトウェア コーポレイション | ネットワーク・アプリケーション用のテスト及びデバッグツール |
US6282701B1 (en) | 1997-07-31 | 2001-08-28 | Mutek Solutions, Ltd. | System and method for monitoring and analyzing the execution of computer programs |
US6349406B1 (en) | 1997-12-12 | 2002-02-19 | International Business Machines Coporation | Method and system for compensating for instrumentation overhead in trace data by computing average minimum event times |
US6553565B2 (en) | 1999-04-23 | 2003-04-22 | Sun Microsystems, Inc | Method and apparatus for debugging optimized code |
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 |
US6671825B1 (en) | 1999-11-19 | 2003-12-30 | Oracle International Corporation | Method and apparatus for debugging a software program |
US7058928B2 (en) | 1999-12-23 | 2006-06-06 | Identify Software Ltd. | System and method for conditional tracing of computer programs |
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 |
CA2347647A1 (en) | 2001-05-15 | 2002-11-15 | Ibm Canada Limited-Ibm Canada Limitee | Storing and restoring snapshots of a computer process |
US6854073B2 (en) | 2001-09-25 | 2005-02-08 | International Business Machines Corporation | Debugger program time monitor |
US7047519B2 (en) | 2001-09-26 | 2006-05-16 | International Business Machines Corporation | Dynamic setting of breakpoint count attributes |
US20040006760A1 (en) | 2002-07-08 | 2004-01-08 | Gove Darryl J. | Generating and using profile information automatically in an integrated development environment |
US6901581B1 (en) | 2002-10-02 | 2005-05-31 | Eridon Corporation | Method for software debugging via simulated re-execution of a computer program |
US20040196405A1 (en) | 2003-04-04 | 2004-10-07 | Thomas Spinelli | Method and apparatus for listening to audio corresponding to a PIP display |
US7222264B2 (en) | 2004-03-19 | 2007-05-22 | Intel Corporation | Debug system and method having simultaneous breakpoint setting |
US8490064B2 (en) | 2004-05-21 | 2013-07-16 | Oracle International Corporation | Hierarchical debug |
US20060059146A1 (en) | 2004-09-16 | 2006-03-16 | International Business Machines Corporation | Method and system for tracing components of computer applications |
US20060143412A1 (en) | 2004-12-28 | 2006-06-29 | Philippe Armangau | Snapshot copy facility maintaining read performance and write performance |
US7716643B2 (en) | 2005-05-20 | 2010-05-11 | Microsoft Corporation | Methods and apparatus for software profiling |
US20070074168A1 (en) | 2005-09-29 | 2007-03-29 | International Business Machines Corporation | Automated step type determination |
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 |
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 |
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 |
US9118990B2 (en) | 2007-01-06 | 2015-08-25 | Apple Inc. | Connectors designed for ease of use |
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 |
EP3179324B1 (en) | 2007-02-28 | 2018-06-27 | Rockwell Automation Technologies, Inc. | Interactive tool tip to display and navigate to different resources of a data point |
US8302006B2 (en) | 2007-02-28 | 2012-10-30 | Rockwell Automation Technologies, Inc. | Interactive tooltip to display and navigate to different resources of a data point |
US8522209B2 (en) | 2007-03-30 | 2013-08-27 | Sap Ag | Method and system for integrating profiling and debugging |
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 |
US8091074B2 (en) | 2007-06-21 | 2012-01-03 | Microsoft Corporation | Execution-centric source code view |
US8307375B2 (en) | 2007-09-27 | 2012-11-06 | International Business Machines Corporation | Compensating for instrumentation overhead using sequences of events |
US8060866B2 (en) | 2007-10-19 | 2011-11-15 | GE Intelligent Platforms, Inc | Systems and methods for debugging multiple workflow instances |
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 |
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 |
US8656222B2 (en) | 2009-07-30 | 2014-02-18 | Vmware, Inc. | Method and system for recording a selected computer process for subsequent replay |
US9582396B2 (en) | 2009-10-23 | 2017-02-28 | Novell, Inc. | Techniques for generating an executable debugger script |
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 |
US8595709B2 (en) | 2009-12-10 | 2013-11-26 | Microsoft Corporation | Building an application call graph from multiple sources |
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 |
US8661413B2 (en) | 2011-04-13 | 2014-02-25 | International Business Machines Corporation | Impact indication of thread-specific events in a non-stop debugging environment |
CN102129408B (zh) | 2011-04-14 | 2013-09-25 | 电子科技大学 | 一种基于记录回放技术的嵌入式软件调试装置和方法 |
US20120324236A1 (en) | 2011-06-16 | 2012-12-20 | Microsoft Corporation | Trusted Snapshot Generation |
US9645913B2 (en) | 2011-08-03 | 2017-05-09 | Daniel Geist | Method and apparatus for debugging programs |
US8990780B2 (en) | 2012-03-29 | 2015-03-24 | International Business Machines Corporation | Setting breakpoints in optimized instructions |
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 |
US9710357B2 (en) | 2012-08-04 | 2017-07-18 | Microsoft Technology Licensing, Llc | Function evaluation using lightweight process snapshots |
US8909990B2 (en) | 2012-08-04 | 2014-12-09 | Microsoft Corporation | Historical software diagnostics using lightweight process snapshots |
US9110682B2 (en) | 2012-10-19 | 2015-08-18 | Microsoft Technology Licensing Llc | State machine control of a debugger |
US8935673B1 (en) | 2012-11-30 | 2015-01-13 | Cadence Design Systems, Inc. | System and method for debugging computer program based on execution history |
US9489283B1 (en) * | 2013-03-14 | 2016-11-08 | The Mathworks, Inc. | Unified hardware and software debugging |
US20140317602A1 (en) | 2013-04-19 | 2014-10-23 | International Business Machines Corporation | Graphical User Interface Debugger with User Defined Interest Points |
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 |
CN103365817B (zh) | 2013-07-19 | 2016-12-28 | 深圳市金立通信设备有限公司 | 一种通用串行总线usb电路及终端 |
US20150052400A1 (en) | 2013-08-19 | 2015-02-19 | Concurix Corporation | Breakpoint Setting Through a Debugger User Interface |
US10289411B2 (en) | 2013-11-18 | 2019-05-14 | Microsoft Technology Licensing, Llc | Diagnosing production applications |
US9612939B2 (en) | 2014-10-29 | 2017-04-04 | Microsoft Technology Licensing, Llc. | Diagnostic workflow for production debugging |
-
2014
- 2014-10-29 US US14/527,568 patent/US9612939B2/en active Active
-
2015
- 2015-10-26 CN CN202110096622.9A patent/CN112882925A/zh active Pending
- 2015-10-26 EP EP15788551.8A patent/EP3213216B1/en active Active
- 2015-10-26 CN CN201580056568.8A patent/CN107077414B/zh active Active
- 2015-10-26 WO PCT/US2015/057277 patent/WO2016069425A1/en active Application Filing
-
2017
- 2017-02-24 US US15/441,235 patent/US10380003B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020087950A1 (en) * | 2000-09-27 | 2002-07-04 | International Business Machines Corporation | Capturing snapshots of a debuggee's state during a debug session |
US20060288332A1 (en) * | 2005-06-21 | 2006-12-21 | Microsoft Corporation | Workflow debugger |
US20070240125A1 (en) * | 2005-10-14 | 2007-10-11 | Oracle International Corporation | Debugging functionality embedded in an application |
Also Published As
Publication number | Publication date |
---|---|
WO2016069425A1 (en) | 2016-05-06 |
CN107077414A (zh) | 2017-08-18 |
EP3213216A1 (en) | 2017-09-06 |
US20160124835A1 (en) | 2016-05-05 |
US10380003B2 (en) | 2019-08-13 |
US20170300400A1 (en) | 2017-10-19 |
CN112882925A (zh) | 2021-06-01 |
US9612939B2 (en) | 2017-04-04 |
EP3213216B1 (en) | 2022-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107077414B (zh) | 用于生产调试的诊断工作流程 | |
US9632915B2 (en) | Historical control flow visualization in production diagnostics | |
US10402208B2 (en) | Adaptive portable libraries | |
US10289411B2 (en) | Diagnosing production applications | |
US8756572B2 (en) | Debugger-set identifying breakpoints after coroutine yield points | |
EP3005121B1 (en) | Debugging native code by transitioning from execution in native mode to execution in interpreted mode | |
US9009183B2 (en) | Transformation of a system change set from machine-consumable form to a form that is readily consumable by a human | |
US8621435B2 (en) | Time debugging | |
US8972955B2 (en) | Reducing network trips for remote expression evaluation | |
US20160124728A1 (en) | Collecting profile data for modified global variables | |
CN110603527B (zh) | 用于服务器侧生产代码的条件调试的方法、系统和设备 | |
US20160004518A1 (en) | Profile guided optimization in the presence of stale profile data | |
US10853041B2 (en) | Extensible instrumentation | |
US9841960B2 (en) | Dynamic provision of debuggable program code | |
US20170083298A1 (en) | Resilient format for distribution of ahead-of-time compiled code components | |
EP3619612B1 (en) | Temporary de-optimization of target functions in a cloud debugger | |
US10255160B2 (en) | Data breakpoint with compacting garbage collection | |
Olsson et al. | Investigation of High-Level Language Support in a Resource-Constrained Embedded Environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |