CN102004692B - 进程调试方法及装置 - Google Patents
进程调试方法及装置 Download PDFInfo
- Publication number
- CN102004692B CN102004692B CN201010559840.3A CN201010559840A CN102004692B CN 102004692 B CN102004692 B CN 102004692B CN 201010559840 A CN201010559840 A CN 201010559840A CN 102004692 B CN102004692 B CN 102004692B
- Authority
- CN
- China
- Prior art keywords
- agent thread
- debug command
- debug
- debugged
- consumer process
- 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
Abstract
本发明公开了一种进程调试方法及装置,该方法包括:代理线程接收到来自用户的调试命令,其中调试命令用于调试待调试的用户进程,代理线程预先设置在待调试的用户进程中;代理线程根据调试命令,调试待调试的用户进程。本发明可以实现故障的快速、准确定位。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种进程调试方法及装置。
背景技术
由于类Unix系统用户态进程地址空间具有相互独立性,shell程序的空间和用户进程的空间是相对隔离的,所以在一个进程运行过程中,我们无法通过shell获取用户进程空间的信息,也难以实现对运行进程的访问和控制,即对进程进行在线调试。
传统的类Unix系统软件开发,在开发初期会使用一些调试工具,对程序设置断点或是让程序单步执行,来跟踪调试程序。待软件开发完成后,一般都会进行优化编译。以release版本发布,在这种情况下,调试工具是没法对软件进行精确调试跟踪的。如果开发者需要抓取系统运行过程中的一些信息,一般只能查看软件在运行过程中的一些状态输出,或者由串口打印,或者由别的信号来表达。而当软件流程出现异常导致系统无法正常工作的时候,故障现场的数据只能靠程序预定的流程来收集。事后,开发者再根据这些数据来定位故障产生的原因。
这种软件架构存在着一些缺陷,首先,系统运行过程中的状态信息由程序主动输出,这个操作会在系统正常工作流程中,若系统比较复杂,信息量大,这部分流程会消耗很多CPU,严重影响系统性能。其次,在发生软件异常时,异常记录信息由软件设计人员预先设定,故障发生后,开发者只能利用仅有的这些数据进行故障分析,如果某些重要信息没有记录下来,那就只能重新制作临时软件版本去收集信息,再复现这个故障。而很多故障往往是不能或者很难复现的,所以这类故障定位的效率会很低或者根本无法定位。
发明内容
针对相关技术中进程调试过程会消耗很多CPU并难以定位故障的问题而提出本发明,为此,本发明的主要目的在于提供一种进程调试方法及装置,以解决上述问题。
为了实现上述目的,根据本发明的一个方面,提供了一种进程调试方法。
根据本发明的进程调试方法包括:代理线程接收到来自用户的调试命令,其中调试命令用于调试待调试的用户进程,代理线程预先设置在待调试的用户进程中;代理线程根据调试命令,调试待调试的用户进程。
进一步地,代理线程接收到来自用户的调试命令包括:与代理线程对应的代理工具接收到来自用户的调试命令,其中代理工具与用户进程分离;代理工具将调试命令转发给代理线程。
进一步地,代理工具使用队列方式或者管道方式将调试命令转发给代理线程。
进一步地,在代理线程接收到来自用户的调试命令之前,上述方法还包括:代理线程创建用户进程的符号表;代理线程在代理线程的私有变量中存储符号表。
进一步地,代理线程根据调试命令,调试待调试的用户进程包括:代理线程分离调试命令,得到调试函数名和参数;代理线程在符号表中查找与调试函数名对应的执行函数;代理线程执行该执行函数。
进一步地,代理线程根据调试命令,调试待调试的用户进程包括:代理线程获取用户进程的状态信息;代理线程向代理工具发送用户进程的状态信息,其中代理工具与用户进程分离。
进一步地,代理线程根据调试命令,调试待调试的用户进程包括以下至少之一:调试命令为Printfifo,代理线程判断代理线程的输出是否已经重定向到管道,如果判断结果为否,则将代理线程的输出重定向到管道,否则忽略调试命令;调试命令为Debug,代理线程判断是否处于调试状态,如果判断结果为否,则代理线程进入调试状态,否则忽略调试命令;调试命令为Quit,代理线程判断代理线程的输出是否已经重定向,如果判断结果为是,则恢复代理线程的输出的重定向,否则忽略调试命令。
为了实现上述目的,根据本发明的另一个方面,提供了一种进程调试装置。
根据本发明的进程调试装置包括:接收模块,用于接收来自用户的调试命令,其中调试命令用于调试待调试的用户进程,接收模块所属的代理线程预先设置在待调试的用户进程中;调试模块,用于根据调试命令,调试待调试的用户进程。
进一步地,进程调试装置还包括:创建模块,用于创建用户进程的符号表;存储模块,用于在代理线程的私有变量中存储符号表。
进一步地,调试模块包括:分离子模块,用于分离调试命令,得到调试函数名和参数;查找子模块,用于在符号表中查找与调试函数名对应的执行函数;执行子模块,用于执行该执行函数。
通过本发明,在用户进程中添加了代理线程,它可以根据用户的调试命令调试用户进程,解决了相关技术中进程调试过程会消耗很多CPU并难以定位故障的问题,从而实现故障的快速、准确地定位,并且,如果没有需要,代理线程是保持阻塞的,所以仅仅会增加代码体积,而不会消耗CPU影响系统性能。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的进程调试方法的流程图;
图2是根据本发明实施例的D-Shell模块在类Unix系统中的应用场景的示意图;
图3是根据本发明实施例的D-Shell模块中D-Shell线程的流程图;
图4是根据本发明实施例的D-Shell模块中D-Shell工具的流程图;
图5是根据本发明实施例的进程调试装置的结构框图;
图6是根据本发明优选实施例一的进程调试装置的结构框图;
图7是根据本发明优选实施例二的进程调试装置的结构框图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
本发明实施例提供了一种进程调试方法。图1是根据本发明实施例的进程调试方法的流程图,包括如下的步骤S102至步骤S104。
步骤S102,代理线程接收到来自用户的调试命令,其中调试命令用于调试待调试的用户进程,代理线程预先设置在待调试的用户进程中。
步骤S104,代理线程根据调试命令,调试待调试的用户进程。
相关技术中,进程调试过程会消耗很多CPU并难以定位故障。本发明实施例在用户进程中添加了代理线程,它可以根据用户的调试命令调试用户进程,从而实现故障的快速、准确地定位,并且,如果没有需要,代理线程是保持阻塞的,所以仅仅会增加代码体积,而不会消耗CPU影响系统性能。
需要说明的是,本发明的进程调试方法可以适用于类Unix系统,尤其适用于Linux系统或嵌入式Linux系统。
优选地,代理线程接收到来自用户的调试命令包括:与代理线程对应的代理工具接收到来自用户的调试命令,其中代理工具与用户进程分离;代理工具将调试命令转发给代理线程。
本优选实施例,在软件运行的过程中,通过代理工具直接跟运行中的软件交互。这样,用户只需要通过telnet到待调试的系统,运行代理工具,并执行一些命令,即可将代理工具和代理线程连接,然后,可以在代理工具中输入调试命令调试用户进程,或者查看用户进程的全局变量值。
优选地,代理工具使用队列方式或者管道方式将调试命令转发给代理线程。
需要说明的是,D-Shell代理线程和D-Shell工具需要同步,否则会出现异常。比如,D-Shell工具退出的时候,D-Shell代理线程必须恢复输出重定向,否则D-Shell代理线程将输出往管道里面写,却没有进程读管道,管道必定溢出。
优选地,在代理线程接收到来自用户的调试命令之前,上述方法还包括:代理线程创建用户进程的符号表;代理线程在代理线程的私有变量中存储符号表。
优选地,代理线程根据调试命令,调试待调试的用户进程包括:代理线程分离调试命令,得到调试函数名和参数;代理线程在符号表中查找与调试函数名对应的执行函数;代理线程执行该执行函数。
优选地,代理线程根据调试命令,调试待调试的用户进程包括:代理线程获取用户进程的状态信息;代理线程向代理工具发送用户进程的状态信息,其中代理工具与用户进程分离。
优选地,代理线程根据调试命令,调试待调试的用户进程包括以下至少之一:调试命令为Printfifo,代理线程判断代理线程的输出是否已经重定向到管道,如果判断结果为否,则将代理线程的输出重定向到管道,否则忽略调试命令;调试命令为Debug,代理线程判断是否处于调试状态,如果判断结果为否,则代理线程进入调试状态,否则忽略调试命令;调试命令为Quit,代理线程判断代理线程的输出是否已经重定向,如果判断结果为是,则恢复代理线程的输出的重定向,否则忽略调试命令。
下面将结合实例对本发明实施例的实现过程进行详细描述。
图2是根据本发明实施例的D-Shell模块在类Unix系统中的应用场景的示意图,如图2所示,图中有三个进程,其中用户进程1和用户进程2是软件的主体。D-Shell工具(即上述代理工具)和驻留在用户进程中的D-Shell代理线程(即上述代理线程)共同完成D-Shell对用户进程的在线调试功能。D-Shell代理线程和D-Shell工具使用管道和消息队列来进行交互。
基于图2的D-Shell模块,首先需要进行下述准备工作。
1、将用户进程(elf格式执行文件名)加入到D-Shell配置文件中,D-Shell代理线程和D-Shell工具都需要使用到这个配置文件。
2、在应用程序中选择一个合适的地方进行D-Shell代理线程初始化,D-Shell代理线程与应用程序编译在一起。
3、D-Shell工具需要单独编译。
4、将D-Shell工具和应用程序放置在同一个目录下面,先执行应用程序,再执行D-Shell工具,这样就可以使用D-Shell工具进行在线调试了。
然后,在用户进程启动过程中,它需要调用D-Shell初始化函数,创建D-Shell代理线程,D-Shell代理线程会创建队列和管道,等用户进程正常启动之后,我们就可以开动D-Shell工具对用户进程进行调试了。D-Shell工具将用户命令经过本地解析后,通过消息队列发送给D-Shell代理线程。D-Shell代理线程收到用户命令后,会在用户进程的空间执行相应的操作,或者获取一些有用的信息,然后通过管道传送给D-Shell工具。D-Shell模块就这样实现了用户态进程进行在线调试的功能。
图3是根据本发明实施例的D-Shell模块中D-Shell线程的流程图,如图3所示,包括如下的步骤S302至步骤S320。
步骤S302,D-Shell初始化。
步骤S304,启动D-Shell代理线程。
具体地,在用户进程初始化时,调用Dshell_init()函数,启动代理线程。并且优选地,D-Shell初始化函数启动代理线程后就回到用户进程,继续执行用户进程的流程。
步骤S306,创建符号表。
具体地,用户进程会根据配置文件读取进程的elf执行文件,根据elf文件来创建本进程的符号表。
步骤S308,创建用来输出重定向的管道。
步骤S310,创建用来接收D-Shell传来的命令的队列。
步骤S312,代理线程进入死循环,阻塞读消息队列。
步骤S314,在非调试模式(运行调试函数状态)下,判断是否为Printffifo、quit、debug字符串,如果是则在步骤S318至步骤S322中选择相应的执行,如果不是以上字符串,则进行步骤S316。
步骤S316,判断是否是调试状态,如果是则分离调试函数并执行调试函数,如果不是则忽略,并返回步骤S312。
具体地,分离调试函数并执行调试函数包括如下的步骤:
1、先将字符串分离成函数名和参数的形式。
2、查符号表找到函数或变量。
3、执行函数,或显示变量值。
步骤S318,判断是否输出未重定向,如果是则将输出重定向到pipe,如果已重定向,则忽略,并返回步骤S312。
步骤S320,判断是否是调试状态,如果不是则进入调试状态,如果是则忽略,并返回步骤S312。
步骤S322,判断是否是输出未重定向,如果是则忽略,如果不是(即已重定向),则恢复输出至标准设备,并返回步骤S312。
图4是根据本发明实施例的D-Shell模块中D-Shell工具的流程图,如图4所示,包括如下的步骤S402至S420。
这个模块需要独立编译,在用户进程上电完成后使用,它的作用是利用进程间通信原理将用户的命令传给用户进程空间。
步骤S402,D-Shell工具启动,并执行步骤S404和步骤S412。
步骤S404,开启D-Shell管道守护线程,阻塞读管道。
步骤S406,管道守护线程会根据读到配置文件中的进程信息,打开每个进程的管道。
步骤S408,调用select阻塞读上述每个进程的管道。
步骤S410,根据Select返回值选择读取管道并打印,然后返回进行步骤S408。
步骤S412,D-Shell工具主线程继续打开消息队列,消息队列也是由用户进程创建。
步骤S414,D-Shell使用格式输入的系统调用或readline库的调用,读取用户从键盘输入的命令。这里也会阻塞,直到用户敲入命令并以回车结束,D-Shell工具会进入用户命令分析流程。
步骤S416,判断是否为调试状态,如果是则进行步骤S418,否则进行步骤S420。
步骤S418,若用户进程为调试状态,键盘获取输入为‘Q’,就进入非调试状态,并向对应消息队列发送“Quit”,如果是别的字符串,D-Shell会认为它是调试函数,D-Shell工具会将字符串直接发送到消息队列。
步骤S420,如果用户进程不是调试状态,D-Shell会对输入的字符串进行比对。对不同的命令会执行相应的操作,使D-Shell代理线程进入不同的状态,或者输出重定向,或者进入调试状态。即向对应进程的消息队列发送“Printfifo”或者“Debug”。
优选地,对于调试状态下的调试函数,D-Shell工具会调用readline库函数来对近10次执行的调试函数进行历史保留操作,使用上下方向键即可调用之前使用过的调试函数。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明实施例提供了一种进程调试装置,该进程调试装置可以用于实现上述进程调试方法。图5是根据本发明实施例的进程调试装置的结构框图,如图5所示,包括接收模块52和调试模块54。下面对其进行详细描述。
接收模块52,用于接收来自用户的调试命令,其中调试命令用于调试待调试的用户进程,接收模块所属的代理线程预先设置在待调试的用户进程中;调试模块54,连接至接收模块52,用于根据接收模块52接收的调试命令,调试待调试的用户进程。
图6是根据本发明优选实施例一的进程调试装置的结构框图。
优选地,上述进程调试装置还包括创建模块56和存储模块58,下面对其进行详细描述。
创建模块56,用于创建用户进程的符号表;存储模块58,连接至创建模块56,用于在代理线程的私有变量中存储创建模块56创建的符号表。
图7是根据本发明优选实施例二的进程调试装置的结构框图。
优选地,调试模块54包括分离子模块542,查找子模块544和执行子模块546,下面对其结构进行详细描述。
分离子模块542,连接至接收模块52,用于分离接收模块52接收的调试命令,得到调试函数名和参数;查找子模块544,连接至分离子模块542,用于在符号表中查找与分离子模块542分离得到的调试函数名对应的执行函数;执行子模块546,连接至查找子模块544,用于执行查找子模块544查找的执行函数。
需要说明的是,装置实施例中描述的进程调试装置对应于上述的方法实施例,其具体的实现过程在方法实施例中已经进行过详细说明,在此不再赘述。
综上所述,根据本发明的上述实施例,提供了一种进程调试方法及装置。通过在用户进程中添加了代理线程,它可以根据用户的调试命令调试用户进程,解决了相关技术中进程调试过程会消耗很多CPU并难以定位故障的问题,从而实现故障的快速、准确地定位,并且,如果没有需要,代理线程是保持阻塞的,所以仅仅会增加代码体积,而不会消耗CPU影响系统性能。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种进程调试方法,其特征在于,包括:
代理线程接收到来自用户的调试命令,其中所述调试命令用于调试待调试的用户进程,所述代理线程预先设置在所述待调试的用户进程中,所述代理线程接收到来自所述用户的所述调试命令包括:与所述代理线程对应的代理工具接收到来自所述用户的所述调试命令,其中所述代理工具与所述用户进程分离;所述代理工具将所述调试命令转发给所述代理线程;
所述代理线程根据所述调试命令,调试所述待调试的用户进程;
其中,所述代理线程根据所述调试命令,调试所述待调试的用户进程包括以下至少之一:所述调试命令为Printfifo,所述代理线程判断所述代理线程的输出是否已经重定向到管道,如果判断结果为否,则将所述代理线程的输出重定向到管道,否则忽略所述调试命令;所述调试命令为Debug,所述代理线程判断是否处于调试状态,如果判断结果为否,则所述代理线程进入调试状态,否则忽略所述调试命令;所述调试命令为Quit,所述代理线程判断所述代理线程的输出是否已经重定向,如果判断结果为是,则恢复所述代理线程的输出的重定向,否则忽略所述调试命令。
2.根据权利要求1所述的方法,其特征在于,所述代理工具使用队列方式或者管道方式将所述调试命令转发给所述代理线程。
3.根据权利要求1所述的方法,其特征在于,在所述代理线程接收到来自所述用户的所述调试命令之前,所述方法还包括:
所述代理线程创建所述用户进程的符号表;
所述代理线程在所述代理线程的私有变量中存储所述符号表。
4.根据权利要求3所述的方法,其特征在于,所述代理线程根据所述调试命令,调试所述待调试的用户进程包括:
所述代理线程分离所述调试命令,得到调试函数名和参数;
所述代理线程在所述符号表中查找与所述调试函数名对应的执行函数;
所述代理线程执行所述执行函数。
5.根据权利要求3所述的方法,其特征在于,所述代理线程根据所述调试命令,调试所述待调试的用户进程包括:
所述代理线程获取所述用户进程的状态信息;
所述代理线程向代理工具发送所述用户进程的状态信息,其中所述代理工具与所述用户进程分离。
6.一种进程调试装置,其特征在于,包括:
接收模块,用于接收来自用户的调试命令,其中所述调试命令用于调试待调试的用户进程,所述接收模块所属的代理线程预先设置在所述待调试的用户进程中,接收来自所述用户的所述调试命令包括:与所述代理线程对应的代理工具接收到来自所述用户的所述调试命令,其中所述代理工具与所述用户进程分离;所述代理工具将所述调试命令转发给所述代理线程;
调试模块,用于根据所述调试命令,调试所述待调试的用户进程;
其中,所述代理线程根据所述调试命令,调试所述待调试的用户进程包括以下至少之一:所述调试命令为Printfifo,所述代理线程判断所述代理线程的输出是否已经重定向到管道,如果判断结果为否,则将所述代理线程的输出重定向到管道,否则忽略所述调试命令;所述调试命令为Debug,所述代理线程判断是否处于调试状态,如果判断结果为否,则所述代理线程进入调试状态,否则忽略所述调试命令;所述调试命令为Quit,所述代理线程判断所述代理线程的输出是否已经重定向,如果判断结果为是,则恢复所述代理线程的输出的重定向,否则忽略所述调试命令。
7.根据权利要求6所述的装置,其特征在于,还包括:
创建模块,用于创建所述用户进程的符号表;
存储模块,用于在所述代理线程的私有变量中存储所述符号表。
8.根据权利要求7所述的装置,其特征在于,所述调试模块包括:
分离子模块,用于分离所述调试命令,得到调试函数名和参数;
查找子模块,用于在所述符号表中查找与所述调试函数名对应的执行函数;
执行子模块,用于执行所述执行函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010559840.3A CN102004692B (zh) | 2010-11-25 | 2010-11-25 | 进程调试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010559840.3A CN102004692B (zh) | 2010-11-25 | 2010-11-25 | 进程调试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102004692A CN102004692A (zh) | 2011-04-06 |
CN102004692B true CN102004692B (zh) | 2015-08-12 |
Family
ID=43812068
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010559840.3A Active CN102004692B (zh) | 2010-11-25 | 2010-11-25 | 进程调试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102004692B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593239B (zh) * | 2013-10-28 | 2017-06-06 | 大唐移动通信设备有限公司 | Linux系统中应用进程命令处理的方法及装置 |
CN106708488A (zh) * | 2015-11-17 | 2017-05-24 | 中兴通讯股份有限公司 | 一种多应用程序的调试系统和方法 |
CN109412884A (zh) * | 2018-08-21 | 2019-03-01 | 平安科技(深圳)有限公司 | 组件的性能数据采集方法、装置及存储介质、服务器 |
CN111400172B (zh) * | 2020-03-03 | 2023-04-28 | 北京声智科技有限公司 | 程序调试方法及装置 |
CN111459827A (zh) * | 2020-04-07 | 2020-07-28 | 长沙景嘉微电子股份有限公司 | 一种跨平台调试shell的实现方法、装置和计算机 |
CN111611161B (zh) * | 2020-05-20 | 2023-08-08 | 中电科航空电子有限公司 | 一种应用于航空电子软件的轻量级调试工具的实现方法 |
CN112231221A (zh) * | 2020-10-26 | 2021-01-15 | 积成电子股份有限公司 | 一种嵌入式Linux系统应用程序的调测方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101211309A (zh) * | 2006-12-29 | 2008-07-02 | 中兴通讯股份有限公司 | 嵌入式系统中进程异常跟踪定位的方法 |
CN101681280A (zh) * | 2007-05-25 | 2010-03-24 | 微软公司 | 使用外部调试基础结构的进程内调试 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101515251A (zh) * | 2009-03-31 | 2009-08-26 | 华为技术有限公司 | 板级平台调试方法、装置和系统 |
-
2010
- 2010-11-25 CN CN201010559840.3A patent/CN102004692B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101211309A (zh) * | 2006-12-29 | 2008-07-02 | 中兴通讯股份有限公司 | 嵌入式系统中进程异常跟踪定位的方法 |
CN101681280A (zh) * | 2007-05-25 | 2010-03-24 | 微软公司 | 使用外部调试基础结构的进程内调试 |
Also Published As
Publication number | Publication date |
---|---|
CN102004692A (zh) | 2011-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102004692B (zh) | 进程调试方法及装置 | |
CN103729288B (zh) | 一种嵌入式多核环境下应用程序的调试方法 | |
CN100555218C (zh) | 用于改善片上仿真系统中高级语言的仿真速度的装置和方法 | |
CN101535962B (zh) | 用于可信/不可信数字信号处理器调试操作的方法及系统 | |
CN101529390B (zh) | 用于多线程数字信号处理器的非侵入性线程选择性调试方法及系统 | |
JP2795244B2 (ja) | プログラムデバッグシステム | |
CN100538736C (zh) | 存储和回存状态上下文在图形处理单元的方法和装置 | |
US20050160431A1 (en) | Method and mechanism for debugging a series of related events within a computer system | |
CN101071376A (zh) | 一种应用程序界面的处理方法及系统 | |
CN103164300A (zh) | 一种移动终端触摸屏自动测试方法及装置 | |
CN102609241A (zh) | 热补丁方法及装置 | |
CN103077112A (zh) | 一种软件调试的方法和系统 | |
CN106201896A (zh) | 一种嵌入式环境下基于检查点的调试方法、系统及装置 | |
CN104320793B (zh) | 一种手机短信自动化测试方法及系统 | |
CN101251799B (zh) | 管理实现的方法和装置 | |
CN102135877B (zh) | 自动化构建方法及装置 | |
CN109766273A (zh) | 死循环的定位方法、装置、计算机设备和存储介质 | |
CN105630664B (zh) | 一种反向调试方法、装置及调试器 | |
CN106407800A (zh) | 一种hook的方法及终端设备 | |
US8819626B2 (en) | Sharable development environment bookmarks for functional/data flow | |
JP3429631B2 (ja) | 並列計算機システム | |
CN115080113A (zh) | 项目代码检测方法和装置、可读存储介质、电子设备 | |
CN107656828A (zh) | 一种检测程序运行偏离路径的方法和装置 | |
JP2003242313A (ja) | 業務進捗制御装置及びその方法と、業務進捗制御プログラム及びそのプログラムを記録した記録媒体 | |
CN103577170A (zh) | 网络应用的构建方法及装置 |
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 |