本发明专利技术涉及一种具有程序分析功能的程序调试系统,该程序调试系统的调试步骤包括与目标虚拟机建立连接、标准调试及扩展调试;该程序调试系统不再局限于传统的程序调试方式,使调试不再仅仅只是分析程序当前的运行状态,调试人员可以查看程序完整的执行过程,方便的调试和理解程序;该程序调试系统还可以记录程序一次执行中的应用类和应用方法,可以降低调试人员的关注范围;本系统进行动态程序切片时不需对程序进行回溯,且只对程序执行过程中涉及的方法进行控制依赖分析,能够提高算法的效率,根据堆栈信息和控制依赖关系能够提高切片的精度。
【技术实现步骤摘要】
本专利技术涉及一种程序调试系统,尤其是在软件调试和系统维护过程中对程序进行分析和理解的具有程序分析功能的程序调试系统。
技术介绍
程序调试,是将编制的程序投入实际运行前,用手工或编译程序的方法进行测试,修正语法错误和逻辑错误的过程。这是保证计算机信息系统正确性的必不可少的步骤。随着软件规模的日益增大,传统的调试技术不能够有效地处理复杂大型程序。大型应用系统通常有数百万行的代码,程序开发人员往往不能够快速的理解程序中代码,这给程序的调试和维护工作带来了很大的困难。在程序调试中,最常见的工作是发现一个错误并找出所有与该错误有关的语句,动态程序切片工具可容易地做到这一点。程序切片是一种程序分析技术,用来将大程序分解成小片段,删除一些与兴趣点不相关的语句,帮助开发人员从中提取感兴趣的部分。其概念和原理由M. Weiser于1979首次建立。使用程序切片技术,将简化程序分析和理解的难度,加速程序的测试和调试工作,缩短程序的开发和维护时间。根据切片过程对程序某一次具体的输入的依赖程度,可以将程序切片分为静态切片和动态切片。静态切片是指不考虑程序运行时的输入,完全利用静态分析方法得到切片,即通过分析程序的源代码,计算所有可能输入情况下的程序切片。静态切片考虑了程序中所有的执行路径,包含了所有与兴趣点处变量相关的语句,而不管某些语句在程序实际的执行中是否被执行,具有很大的冗余性。动态切片是指在特定输入下实际影响兴趣点变量值或受兴趣点变量值影响的所有语句的集合。动态切片只考虑程序在某个具体输入下,实际执行的路径中,和兴趣点变量相关的语句。因此,动态切片的计算过程依赖于程序的具体输入,每一次的计算工作量较小,得到的切片相对比较精确。
技术实现思路
为了解决现有的调试技术不能够有效地处理复杂大型程序且程序开发人员往往不能够快速的理解程序中代码的问题,本专利技术提供一种具有程序分析功能的程序调试系统,该程序调试系统不再局限于传统的程序调试方式,使调试不再仅仅只是分析程序当前的运行状态,该程序调试系统可以记录从程序开始执行到当前状态的轨迹信息,调试人员可以查看程序完整的执行过程,方便的调试和理解程序;该程序调试系统还可以记录程序一次执行中的应用类和应用方法,可以降低调试人员的关注范围;本专利技术计算应用方法的控制依赖信息,从而可以求得调试语句的动态程序切片,可以使调试人员得到更加精确的调试信息,同时本系统进行动态程序切片时不需对程序进行回溯,且只对程序执行过程中涉及的方法进行控制依赖分析,能够提高算法的效率,根据堆栈信息和控制依赖关系能够提高切片的精度。本专利技术解决其技术问题所采用的技术方案是该程序调试系统针对Java语言,在eclipse环境中开发,具有标准的调试功能和扩展的调试功能。标准的调试功能包括分步执行、设置断点、检查变量和值及挂起和恢复线程四项功能。扩展的调试功能包括轨迹分析、应用类类层次分析、控制依赖分析及动态程序切片四项功能。该程序调试系统的调试步骤如下 (I)与目标虚拟机建立连接。Java程序运行在虚拟机Virtual Machine中,程序调试系统要对目标程序Target进行调试,首先要与目标虚拟机TargetVM建立连接,获得目标虚拟机镜像 TargetVMMirror。实现了 VirtualMachine接口,该接口提供了一套方法,可以用来直接或间接地获取目标虚拟机TargetVM上所有的数据和状态信息,也可以挂起、恢复、中止TargetVM,系统因此可以获取TargetVM上的信息,维持与目标虚拟机的通信,检查、修改和控制TargetVM 上的资源。连接的流程图如图I所示。启动系统,获得目标虚拟机连接器Connector,Connector有共享内存连接器ShareMemoryConnector和套接字连接器SocketConnector两种。不同的Java开发工具包JDK含有其中的一种或两种。选择一种Connector,其中ShareMemoryConnector优先,设置共享地址后进入监听状态,等待目标虚拟机TargetVM执行。监听到TargetVM启动后,立刻与TargetVM连接,获得TargetVMMirror ;此时,Java Debugger就可以通过TargetVMMirror对TargetVM进行操纵;为了获得程序的轨迹信息,需要对目标虚拟机进行事件请求EventRequest设置,包括ThreadStartRequest、ClassPrepareRequest> MethodEntryRequest 及 MethodExitRequest,完成事件请求配置后,系统控制目标程序开始执行,并对程序执行产生的事件进行处理。(2)标准调试Standard Debugging。与目标虚拟机TargetVM进行连接后,系统可以对目标程序Target进行标准调试。标准调试包括分步执行Step-by-step、设置断点Set Breakpoints、检查变量和值 Inspect Variables 和挂起 / 恢复线程 Suspend/resumethreads。四项标准调试方法分别如下 2.I分步执行St印-by-st印。分步执行是最常见的调试手段之一,即每次只执行一行代码。采用这种方式,程序调试人员可以一步一步跟踪程序执行的流程,根据变量的值,找到错误的原因。系统设置Target分步执行Step-by-step的流程图如图2所不。系统获取TargetVM当前发生的一条事件event,判断事件类型。如果事件类型是ThreadStartEvent,获取事件发生所在线程的引用threadReference,根据过滤信息Filter为引用添加类过滤器addClassExclusionFilter,然后设置线程单步执行setStepRequest。此时,发生事件所在线程开始单步执行。当所有的线程都设置为分步执行时,Target单步执行。如果事件类型不是ThreadStartEvent,根据类型调用相应事件的处理方法。设置断点Set Breakpoints。设置断点是调试器的功能之一,可以让程序中断在需要的地方,从而方便其分析。也可以在一次调试中设置断点,下一次程序运行到断点位置,便可在上次设置断点的位置中断下来,极大的方便了操作,同时节省了时间。系统设置断点Set Breakpoints的流程图如图3所示。系统获取TargetVM当前发生的一条事件event,判断事件类型。如果事件类型是ClassPrepareEvent,获取事件产生事件镜像的引用referenceType。从断点设置信息集合BpSetMsgs中取出每一条断点设置信息BpSetMsg,查看该信息是否与引用相匹配。如果匹配,则根据该信息设置断点,否则,获取下一条BpSetMsg,直至每一条信息都取出匹配过。如果事件类型为LocatableEvent,则可以获取断点事件请求集合breakpointRequests,根据程序调试人员的需要添加新的断点或删除已有断点。如果事件类型不是上述两种类型,根据类型调用相应事件的处理方法。检查变量和值Inspect Variables。检查变量和值是调试器的基本功能之一,是直接有效的了解程序当本文档来自技高网...
【技术保护点】
具有程序分析功能的程序调试系统,该程序调试系统的调试步骤包括与目标虚拟机建立连接、标准调试及扩展调试,其特征在于,与目标虚拟机建立连接,Java程序运行在虚拟机Virtual?Machine中,程序调试系统要对目标程序Target进行调试,首先要与目标虚拟机TargetVM建立连接,获得目标虚拟机镜像TargetVMMirror;TargetVMMirror实现了VirtualMachine接口,该接口提供了一套方法,可以用来直接或间接地获取目标虚拟机TargetVM上所有的数据和状态信息,也可以挂起、恢复、中止TargetVM,系统因此可以获取TargetVM上的信息,维持与目标虚拟机的通信,检查、修改和控制TargetVM上的资源;启动系统,获得目标虚拟机连接器Connector,Connector有共享内存连接器ShareMemoryConnector和套接字连接器SocketConnector两种;选择一种Connector,其中ShareMemoryConnector优先,设置共享地址后进入监听状态,等待目标虚拟机TargetVM执行;Connector监听到TargetVM启动后,立刻与TargetVM连接,获得TargetVMMirror;此时,Java?Debugger就可以通过TargetVMMirror对TargetVM进行操纵;为了获得程序的轨迹信息,需要对目标虚拟机进行事件请求EventRequest设置,包括ThreadStartRequest、ClassPrepareRequest、MethodEntryRequest及MethodExitRequest,完成事件请求配置后,系统控制目标程序开始执行,并对程序执行产生的事件进行处理;标准调试,与目标虚拟机TargetVM进行连接后,系统可以对目标程序Target进行标准调试;标准调试包括分步执行Step?by?step、设置断点Set?Breakpoints、检查变量和值Inspect?Variables和挂起/恢复线程Suspend/resume?threads;扩展调试,与目标虚拟机TargetVM进行连接后,系统可以结合标准调试Standard?Debugging,实现对目标程序Target的扩展调试功能;扩展调试包括轨迹分析Trace?Analysis、应用类类层次分析Hierarchy?Analysis、控制依赖分析Control?Dependence?Analysis及动态程序切片Dynamic?Slice。...
【技术特征摘要】
【专利技术属性】
技术研发人员:王兴亚,刘颖祺,郭超群,韩众和,张艳梅,姜淑娟,
申请(专利权)人:中国矿业大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。