CN101685420B - 多线程调试方法和装置 - Google Patents

多线程调试方法和装置 Download PDF

Info

Publication number
CN101685420B
CN101685420B CN 200810161283 CN200810161283A CN101685420B CN 101685420 B CN101685420 B CN 101685420B CN 200810161283 CN200810161283 CN 200810161283 CN 200810161283 A CN200810161283 A CN 200810161283A CN 101685420 B CN101685420 B CN 101685420B
Authority
CN
China
Prior art keywords
debugging
threads
thread
breakpoint
task group
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
Application number
CN 200810161283
Other languages
English (en)
Other versions
CN101685420A (zh
Inventor
崔云峰
李翌
程圣宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
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
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN 200810161283 priority Critical patent/CN101685420B/zh
Publication of CN101685420A publication Critical patent/CN101685420A/zh
Application granted granted Critical
Publication of CN101685420B publication Critical patent/CN101685420B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种多线程调试方法和装置,其中,该方法包括:在预确定的调试功能点包含多个线程的情况下,将多个线程组成调试任务组,并确定调试触发事件;在调试触发事件发生的情况下,停止调试任务组中的多个线程并在调试功能点进行调试。借助于本发明,通过将多个存在逻辑关系的线程组织为一个任务组进行调试,能为用户提供更多的调试信息,解决相关技术中由于单个线程或整个进程的停止而影响调试结果的问题,进而提高程序调试的工作效率。

Description

多线程调试方法和装置
技术领域
本发明涉及通信领域,并且特别地,涉及一种多线程调试方法和装置。
背景技术
随着信息技术的不断发展、软件规模的不断扩大以及复杂度的不断提高,一个功能往往需要由多个线程协同完成。在实际应用当中,如何能够有效地帮助软件开发人员快速定位并消除代码中的故障,成为调试器的重要问题。
目前,调试器提供了断点功能、程序运行流程控制功能、数据查看功能、以及堆栈分析功能等等,通过这些功能可以有效地帮助软件开发人员快速定位并消除代码中的故障,这些功能的操作对象基本都是单个被调试线程或整个进程。
其中,断点功能是开发人员调试的基本手段,按照实现方式可分为软件断点和硬件断点。其中,软件断点是指:通过在程序的代码中插入断点指令实现,当被调试程序执行到此断点指令后即停止,用户可以通过调试器查看当前的变量、寄存器、调用堆栈等等;硬件断点是指:通过设置硬件调试寄存器,实现监控被调试程序读,写或执行操作。其中,当被调试程序读,写或执行了被观测地址后被调试程序立即停止,此时也可以查看被调试程序的详细信息。
通过断点功能可以非常灵活有效地设置调试触发点,停止并观察触发此调试事件的任务。目前,大多数的调试器还可以在断点上设置一些属性,例如,设置局部断点、全局断点、临时断点、条件断点、忽略次数断点等。具体而言,局部断点是指当前断点只对某个特定的线程有效;全局断点则对当前调试的所有线程有效;临时断点则是遇到一次后就自动删除的断点;条件断点是遇到此断点且满足预设的条件才能停止的断点;忽略次数断点是遇到此断点超过预设的忽略次数后才能停止的断点,并且,用户可以通过调试器组合上面一个或多个断点属性进行调试。
在复杂的大型软件中,各种功能大多是由多个线程协同完成的,一些线程可以协同完成某一功能,而另一些线程协同完成另一些功能,这些功能之间也存在某种因果关系或依赖关系。在调试其中一个功能时需要保证此功能所依赖的其他功能保持正常运行状态,否则就会影响当前功能的调试。
对于这种复杂功能软件,如果仍采用普通的断点及断点属性组合的方式调试,则很难满足调试要求。因为普通的调试器所针对的被调试对象是单个线程或者整个进程,在遇到调试事件时都是当前线程或者整个进程停止。如果整个进程都被停止的情况下,被调试功能所依赖的运行环境(由当前进程中其他线程组提供)就被破坏了,导致当前调试组的功能逻辑可能就受影响;另一方面,如果只有当前线程被停止的情况下,调试器只能获取到这个停止的线程信息,而无法获取实现当前调试功能的所有线程的完整信息,因此不能正确分析当前功能,并且只停止此功能关联的一个线程也可能破坏了整个功能逻辑。
综上所述,目前调试器的调试对象都是单个线程或者整个进程,但是调试需求却是某一个功能,而且此功能由多个线程协同完成,这样就会因为在调试过程中某个线程或整个进程的停止而导致调试结果不准确的问题。
发明内容
考虑到相关技术中由于调试过程中某个线程或整个进程的停止而导致调试结果不准确的问题而做出本发明,为此,本发明的主要目的在于提供一种多线程调试机制,以解决上述问题。
根据本发明的一个方面,提供了一种多线程调试方法。
根据本发明的多线程调试方法包括:在预确定的调试功能点包含多个线程的情况下,将多个线程组成调试任务组,并确定调试触发事件;在调试触发事件发生的情况下,停止调试任务组中的多个线程并在调试功能点进行调试。
其中,将多个线程组成调试任务组的处理可以进一步包括:记录调试任务组的任务组号、和/或记录调试任务组中每个线程的标识。
此外,将多个线程组成调试任务组的处理进一步包括:根据调试功能点的结构确定调试功能点的断点。
此时,停止调试任务组中的多个线程的处理具体为以下之一:
在断点为任务组类型的断点的情况下,根据断点的属性以及调试任务组中每个线程的标识与当前运行的线程的标识确定是否需要停止调试任务组的多个线程;
在断点为非任务组类型的断点的情况下,根据断点的属性确定是否需要停止调试任务组的多个线程。
此外,在调试功能点进行调试的处理具体为:获取调试功能点中全部任务的信息,并根据信息对调试功能点的运行状态进行分析。
并且,在获取了信息之后,该方法可进一步包括:在需要继续观察调试功能点的情况下,继续运行调试功能点所包含的多个线程。
优选地,上述信息包括以下至少之一:线程的变量、线程的调用堆栈、线程的寄存器信息。
并且,上述调试触发事件包括:需要调试的代码或指定内存变量的读写操作。
根据本发明的另一方面,提供了一种多线程调试装置。
根据本发明的多线程调试装置包括:组合模块,用于在预确定的调试功能点包含多个线程的情况下,将多个线程组成调试任务组,并确定调试触发事件;调试模块,用于在调试触发事件发生的情况下,停止调试任务组中的多个线程并在调试功能点进行调试。
通过本发明的上述技术方案,通过将多个存在逻辑关系的线程组织为一个任务组进行调试,能为用户提供更多的调试信息,解决相关技术中由于单个线程或整个进程的停止而影响调试结果的问题,进而提高程序调试的工作效率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明方法实施例的多线程调试方法的流程图;
图2是根据本发明方法实施例的方法中任务组数据结构与任务组相关的断点数据结构的示意图;
图3是根据本发明方法实施例的方法中任务组线程遇到断点时的处理流程图;
图4是根据本发明方法实施例的方法中任务组停止后收到运行控制命令时的处理流程图;
图5是根据本发明方法实施例的方法中任务组断点的数据结构内容以及和线程调试控制结构之间的关系示意图;
图6是根据本发明装置实施例的多线程调试装置的框图。
具体实施方式
功能概述
考虑到相关技术中由于调试过程中某个线程或整个进程的停止而导致调试结果不准确的问题而做出本发明。本发明能够根据调试需求确定调试功能点,如果此功能点包含多个线程就将它们组成一个调试任务组;然后再根据功能点的内部逻辑确定调试触发事件,这个触发事件可以是需要调试的代码或某个内存变量的读写操作;最后执行整个被调试程序。当触发事件发生时,调试器就能够及时停止此任务组中所有线程,并且获取这个功能点相关所有任务的详细情况。下面将结合附图详细描述本发明。
方法实施例
在本实施例中,提供了一种多线程调试方法。
如图1所示,根据本发明方法实施例的多线程调试方法包括:步骤S102,在预确定的调试功能点包含多个线程的情况下,将多个线程组成调试任务组,并确定调试触发事件(可以是需要调试的代码、和/或指定内存变量的读写操作等);
步骤S104,在调试触发事件发生的情况下,停止调试任务组中的多个线程并在调试功能点进行调试。
通过上述处理,由于整个调试当中调试功能点相关的线程都保持一致的状态,这样就确保了调试过程中当前功能点的逻辑内部不被破坏;另外,调试过程中功能点之外的其他线程仍然保持运行状态,这样就保证了当前调试功能点的外部环境也没有被破坏,从而有效保证了调试的准确性。
具体地,在将多个线程组成调试任务组时,可以记录调试任务组的任务组号、以及记录调试任务组中每个线程的标识等信息。
并且,将多个线程组成调试任务组时,可以根据调试功能点的结构确定调试功能点的断点。
在调试功能点进行调试时,具体的处理可以为:获取调试功能点中全部任务的信息,并根据该信息对调试功能点的运行状态进行分析。
其中,全部任务的信息可以包括以下至少之一:线程的变量、线程的调用堆栈、线程的寄存器信息。参考这些信息就能够进行分析得出当前功能点的运行状态;此时如果需要继续观察此功能点,可以通过调试器继续运行任务组,这时组内各个线程都被运行起来。
在实际应用中,由于大型复杂软件中各个功能之间存在依赖或因果关系,为了保证本发明的准确实现,需要确保以下几点:
(1)当前调试功能关联的任务组中的线程在遇到用户事先定义的任务组事件时需要停止任务组所有线程;
(2)在任务组中所有线程状态需要保持一致,即,如果有一个组内线程停止则整个任务组中所有线程都停止,如果需要继续运行一个组内线程则整个组内线程都需要运行;
(3)非任务组内的线程在发生组内调试事件时仍然保持继续运行的状态;
(4)对于当前进程中所有线程(包括调试组内线程和非组内线程)都支持原有的调试功能。
为了满足以上实际调试过程的要求,需要在调试过程中将被调试进程中若干个线程作为一个调试对象(即,上述的调试任务组),也就是将用户某个逻辑功能点所涉及的各个线程作为一个调试对象进行调试。
在确定调试任务组时,可以在用户确定调试某个功能后,通过调试器界面将此功能涉及到的若干个线程组成一个调试任务组。这样调试器就记录用户设置的调试组信息,此数据结构定义包括任务组内每个线程的ID、和/或任务组号,具体的记录格式可以参见图2所示的格式,如图2所示,任务组号一项中包含pid1、pid2、、pidn等多个任务组号。
此后,可以执行任务组调试点的设置:根据被调试功能逻辑通过调试界面设置调试点(即,断点)。此调试点的类型既可以是软件断点也可以是硬件断点,并且还可以是各种条件组合的断点。在调试器内部记录了此断点的相关信息以及当前任务组信息,存储的数据结构同样可以参照图2,如图2所示,记录了断点地址、断点类型、断点属性等信息。
接下来,可以调试任务组线程:通过调试器监控正在运行的被调试程序,若当前线程为任务组线程在运行状态下遇到断点,则可以按照图3所示的处理流程进行以下处理:
(31)和(32)收到断点事件后,确定是否是任务组断点,如果当前断点是任务组类型的断点,则执行步骤(33);否则执行步骤(34);
(33)匹配当前线程ID与断点关联的任务组中每个线程的ID,判断当前任务是否为断点关联的组内任务,如果判断为是(能够匹配),则执行步骤(35),否则执行(34);
(34)判断当前任务是否应该停止,如果判断为是,则执行步骤(40),否则执行步骤(38);
(35)进一步分析断点的其他属性规则,如果需要停止,则执行步骤(36),否则执行步骤(38);
(36)调试器通过信号或其它操作系统提供的接口将同组内其它线程停止,并执行(37);
(37)任务组内所有线程都停止后则将组内的所有线程情况显示在调试界面上,处理结束;
(38)跨过断点,被调试任务继续运行,并执行(39);
(39)按照原有断点处理规则处理,结束处理;
(40)修改属性并关联任务组,之后执行(36)。
此外,若当前线程为任务组线程且处于停止状态下,在用户通过调试器控制使其运行起来其处理流程可参照图4,如图4所示,具体包括以下处理过程:
(41)接收到运行控制命令;
(42)判断是否为连续运行(continue)命令,如果是,则执行(43),否则执行(44);
(43)将同组内所有线程执行运行命令,任务组内所有线程状态保持一致,继续观测任务组内各个线程的运行情况,并执行(45);
(44)对于next、step、finish等命令,对当前调试的线程执行next、step、finish命令,组内其他线程执行运行命令,并执行(45);
(45)如果当前调试线程执行结束停止,则将其他同组线程也停止,从而就保证同组线程的状态一致,并执行(46);
(46)在调试器上显示调试组信息,供用户分析和使用。
此外,在调试非任务组线程时,调试器可在监控任务组线程同时也监控非任务组线程,对非任务组线程在遇到任务组断点后跨过此断点继续运行,并且非任务组线程遇到其他断点情况下仍然保持原有的处理流程。
可以看出,本发明能够将某一功能涉及到的若干个多线程作为一个抽象的调试对象,为用户提供这个功能关联的所有线程的详细信息。在采用此方法调试当前任务组时其它非组内的线程则不受任何影响仍然保持正常调试运行状态;而且在调试当前任务组时都不丢失原有的调试功能,这样保证调试手段更为灵活和方便。
下面将以某个具体的嵌入式设备软件为例,对本发明的调试过程进行描述。
假设该设备软件存在线程A,该线程A负责对接收到的报文进行协议分解并交给上层线程B、C、D;其中,上层线程B与线程E、线程F协同完成某业务处理功能。
目前,需要对此业务功能(线程B、E、F组合)进行调试分析,但此功能与线程A存在因果关系;同时这个功能还依赖其它功能(由线程C、D协同完成)。因此在调试这个功能时不能改变其他关联线程(如本例中A、C、D线程)的状态。下面将详细描述对该设备软件的调试操作过程。
1)任务组调试设置
首先,确定将线程B、E、F组织为一个任务组,假设此任务组的组号为1;根据实现逻辑在此功能的代码处(0x08045800)插入一个断点,设置断点类型为任务组断点类型并且关联1号任务组。其中,任务组断点的数据结构内容以及和线程调试控制结构之间的关系可以参照图5,如图5所示,1号任务组中的线程B、E、F、以及任务组之外的线程A、C、D分别对应于一个线程调试模块。
2)调试任务组线程
如果任务组内的线程B执行到代码段地址0x08045800时,CPU硬件产生一个断点异常通过操作系统通知到调试器当前遇到断点的地址以及遇到断点的线程;调试器首先根据断点地址在图5中的断点链表中搜索地址匹配的断点节点,找到这个断点节点后根据断点属性判断是否对遇到断点的线程B生效;由于断点为任务组断点并且B线程为这个断点关联所的任务组,因此断点生效;然后再分析断点其他属性(图5中的条件一)是否成立,如果条件一成立则当前任务组都需要停止否则线程B跨过断点继续运行。如果需要停止任务组则调试器通过断点关联的组属性查找到相关组内其他线程E和F,然后调用操作系统接口使这个线程停止,最后综合断点停止的线程B的信息以及线程E和线程F的当前停止的信息反馈给用户。
如果任务组内的线程B执行到代码段地址0x08040000时,调试器获取到当前断点地址以及相关线程后,通过断点链表查着到地址匹配的断点节点。这个断点节点为一个局部断点节点仅对线程B生效并且没有条件设置,因此线程B需要停止。通过任务组链表头遍历当前所有的任务组链表在1号任务组中匹配到当前线程B,调试器将当前断点类型修改为任务组类型并关联1号任务组,之后再将同组内的线程E、F停止,并将这个信息组织反馈给用户。
通过上面这个过程用户就可以通过设置组断点来分析被调试功能,同时对于任务组内的线程仍然可以使用已有的其他断点功能。由于在上面的过程中进程中的其他线程A、C、D没有被中断,所以当面被调试的功能逻辑所依赖的环境没有被破坏。在这种情况下,如果用户需要继续调试当前任务组,可以通过调试界面操作。
如果用户执行conintue命令,则调试器通过线程B调试控制块可以得出当前调试线程B是停止在一个任务组断点处,并且当前任务组中的其他任务也已经停止了。此时调试控制线程B使其执行跨断点动作,然后将当前任务组中的线程B、E、F都运行起来。这样当前任务组中所有线程又全部都运行起来,所调试的功能点也处于正常工作状态。
如果用户执行step、next等等命令,则调试器控制B线程执行跨断点动作,E和F线程执行继续运行动作。当线程B再次停止后又将线程E和线程F停止。
2)调试非任务组线程
如果非任务组内的线程A执行到代码段地址0x08045800时,调试也可以获取到当前遇到断点的线程A和当前停止的地址。通过遍历断点链表匹配断点地址,查找到这个任务组类型的断点节点。调试分析断点节点为任务组类型断点,然后匹配当前停止的线程A和这个断点关联的任务组1中所有线程。在匹配失败后确认当前断点对线程A无效。因此调试器控制线程A跨过此断点后继续运行。
对于非任务组线程遇到其他类型断点时采用原有的判断逻辑进行控制,故已有的断点功能都仍然有效。
通过以上实例可以看出,任务组调试方式在调试过程中的调试对象为某一个功能的抽象对象(在本例中为线程B、E、F)。当任务组关联的事件发生时能够提供此功能关联的线程B、E、F的完整信息,并且此功能所依赖的其他环境不受任何影响。
这种基于任务组的方法继承了原有的调试断点以及断点属性等方法;同时又打破过去调试对象过于死板的状态,将用户最为关心的功能逻辑作为调试对象,并且可以满足目前复杂功能逻辑的调试需求,能够有效提高调试的效率。
装置实施例
在本实施例中,提供了一种多线程调试装置。
如图6所示,根据本实施例的多线程调试装置包括:
组合模块10,用于在预确定的调试功能点包含多个线程的情况下,将多个线程组成调试任务组,并确定调试触发事件;
调试模块20,用于在调试触发事件发生的情况下,停止调试任务组中的多个线程并在调试功能点进行调试。
在实际执行调试时,该装置同样可以完成图1、图3、图4中所示的处理,从而解决相关技术中由于单个线程或整个进程的停止而影响调试结果的问题,具体处理过程这里不再重复。
综上所述,借助于本发明的技术方案,通过将多个存在逻辑关系的线程组织为一个任务组进行调试,能为用户提供更多的调试信息,解决相关技术中由于单个线程或整个进程的停止而影响调试结果的问题,并且本发明适用于复杂的大型软件,可以很方便地分析大型复杂软件程序,尤其是存在多线程交互的处理逻辑,进而提高程序调试的工作效率,适用于各种操作系统平台之上的本地调试器或交叉调试器;此外,在本发明的实现过程中,对其它非任务组中的线程没有任何影响,并且对于任务组内的线程仍然兼容原有的调试手段。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种多线程调试方法,其特征在于,包括:
在预确定的调试功能点包含多个线程的情况下,将所述多个线程组成调试任务组,并确定调试触发事件;
在所述调试触发事件发生的情况下,停止所述调试任务组中的所述多个线程并在所述调试功能点进行调试。
2.根据权利要求1所述的方法,其特征在于,将所述多个线程组成所述调试任务组的处理进一步包括:记录所述调试任务组的任务组号、和/或记录所述调试任务组中每个线程的标识。
3.根据权利要求1所述的方法,其特征在于,将所述多个线程组成调试任务组的处理进一步包括:
根据所述调试功能点的结构确定所述调试功能点的断点。
4.根据权利要求3所述的方法,其特征在于,停止所述调试任务组中的所述多个线程的处理具体为以下之一:
在所述断点为任务组类型的断点的情况下,根据所述断点的属性以及所述调试任务组中每个线程的标识与当前运行的线程的标识确定是否需要停止所述调试任务组的所述多个线程;
在所述断点为非任务组类型的断点的情况下,根据所述断点的属性确定是否需要停止所述调试任务组的所述多个线程。
5.根据权利要求1所述的方法,其特征在于,在所述调试功能点进行调试的处理具体为:
获取所述调试功能点中全部任务的信息,并根据所述信息对所述调试功能点的运行状态进行分析。
6.根据权利要求5所述的方法,其特征在于,在获取了所述信息之后,进一步包括:
在需要继续观察所述调试功能点的情况下,继续运行所述调试功能点所包含的多个线程。
7.根据权利要求5所述的方法,其特征在于,所述信息包括以下至少之一:线程的变量、线程的调用堆栈、线程的寄存器信息。
8.根据权利要求1至7中任一项所述的方法,其特征在于,所述调试触发事件包括:需要调试的代码或指定内存变量的读写操作。
9.一种多线程调试装置,其特征在于,包括:
组合模块,用于在预确定的调试功能点包含多个线程的情况下,将所述多个线程组成调试任务组,并确定调试触发事件;
调试模块,用于在所述调试触发事件发生的情况下,停止所述调试任务组中的所述多个线程并在所述调试功能点进行调试。
CN 200810161283 2008-09-24 2008-09-24 多线程调试方法和装置 Active CN101685420B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200810161283 CN101685420B (zh) 2008-09-24 2008-09-24 多线程调试方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200810161283 CN101685420B (zh) 2008-09-24 2008-09-24 多线程调试方法和装置

Publications (2)

Publication Number Publication Date
CN101685420A CN101685420A (zh) 2010-03-31
CN101685420B true CN101685420B (zh) 2013-06-12

Family

ID=42048586

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200810161283 Active CN101685420B (zh) 2008-09-24 2008-09-24 多线程调试方法和装置

Country Status (1)

Country Link
CN (1) CN101685420B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102346708B (zh) * 2010-08-03 2014-07-16 中兴通讯股份有限公司 一种调试器及其调试方法
CN101980167B (zh) * 2010-10-19 2013-02-06 上海富士施乐有限公司 一种任务状态机管理机制运行的方法
CN105354136B (zh) 2015-09-25 2018-06-15 华为技术有限公司 一种调试方法、多核处理器和调试设备
CN105224454B (zh) 2015-09-25 2018-06-05 华为技术有限公司 一种调试方法、多核处理器和调试设备
CN105718374A (zh) * 2016-01-26 2016-06-29 国家信息技术安全研究中心 一种热点模块指令跟踪的方法及系统
CN107179982B (zh) * 2016-03-09 2021-05-04 创新先进技术有限公司 一种跨进程调试方法和装置
CN108614763B (zh) * 2016-12-09 2022-01-04 武汉斗鱼网络科技有限公司 一种应用的调试方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1519703A (zh) * 2003-01-23 2004-08-11 英业达股份有限公司 可组合挂接的计算机多线程测试系统及其方法
CN1786925A (zh) * 2005-03-08 2006-06-14 中国科学院软件研究所 基于c++映射的ttcn-3测试系统及测试方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1519703A (zh) * 2003-01-23 2004-08-11 英业达股份有限公司 可组合挂接的计算机多线程测试系统及其方法
CN1786925A (zh) * 2005-03-08 2006-06-14 中国科学院软件研究所 基于c++映射的ttcn-3测试系统及测试方法

Also Published As

Publication number Publication date
CN101685420A (zh) 2010-03-31

Similar Documents

Publication Publication Date Title
CN101685420B (zh) 多线程调试方法和装置
US7950001B2 (en) Method and apparatus for instrumentation in a multiprocessing environment
US8762971B2 (en) Servicing a production program in an integrated development environment
CN101739333B (zh) 应用程序的调试方法、调试工具及调试装置
US8938729B2 (en) Two pass automated application instrumentation
US8997059B2 (en) Reverse debugging
US9239773B1 (en) Method and system for debugging a program that includes declarative code and procedural code
US20090037888A1 (en) Simulation of program execution to detect problem such as deadlock
CN104380264B (zh) 运行时间检测报告
US20110029819A1 (en) System and method for providing program tracking information
CN107077414A (zh) 用于生产调试的诊断工作流程
US20130318504A1 (en) Execution Breakpoints in an Integrated Development Environment for Debugging Dataflow Progrrams
CN104699601A (zh) 用于执行状态机驱动的注入的方法和系统
CN111756575A (zh) 存储服务器的性能分析方法及装置、电子设备
US20150006961A1 (en) Capturing trace information using annotated trace output
CN101504626A (zh) 一种调试控制实现方法及系统
US20090328005A1 (en) Debugger call stack caching
WO2014111825A1 (en) Integration and user story generation and requirements management
CN104252402A (zh) 一种程序调试方法及装置
WO2009156198A1 (en) Method and system for generating of a control flow graph for representing a program code
JPH09503084A (ja) 実行中のリアルタイムシステムにおけるエラー分析用トレーサシステム
CN101237350B (zh) 用于多任务环境单板机的全局变量异常改写定位方法
EP2587380B1 (en) Runtime environment and method for non-invasive monitoring of software applications
US9189366B2 (en) System and method for generating a user callstack trace
Reynolds et al. Cronista: A multi-database automated provenance collection system for runtime-models

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant