一种基于模型驱动进行电信级业务开发的调试方法及装置的制作方法

文档序号:6558224阅读:342来源:国知局
专利名称:一种基于模型驱动进行电信级业务开发的调试方法及装置的制作方法
技术领域
本发明涉及通讯技术领域,尤其涉及一种基于模型驱动进行电信级业务开发的调试方法及装置。
背景技术
现代软件变得越来越庞大,复杂度越来越高,因此,软件的设计和实现的难度也变得越来越大,进而导致了软件开发模式和软件开发工具的发展和进化。从软件开发的进化过程来看,从开始的汇编语言,到过程化语言,再到面向对象的语言,开发工具从开始的编辑器+汇编器/编译器,到功能全面的集成开发环境,以及现在正在不断普及和发展的MDA(模型驱动架构),软件开发的抽象层次越来越高。
其中,MDA是一种以高度抽象的模型为核心的开发模式,通过构造模型可以自动生成高效正确的代码,使得软件开发人员无需再面对无休止的语法错误、内存泄漏等问题。MDA作为一种提高生产效率、降低软件开发复杂度的软件开发模式,在业界的应用日益增多。
在软件开发过程中不可避免要进行软件调试。软件调试作为软件开发流程中必不可少的一部分,能够发现开发过程中由于疏忽或考虑不周造成的各种错误。在MDA开发模式下,虽然出现错误的几率已经大大减少,但由于开发人员所处的抽象层次更高,使得底层错误变得更加隐蔽,这样,错误的定位也就更加困难。为此,便要求调试器更加智能,能够将底层程序运行的错误反馈到上层的模型和脚本代码中,实现图文调试。
在现有的基于MDA的集成开发环境中,为实现软件调试功能,通常均设置有简单的模型运行模拟器。这种模拟器能够模拟程序的运行过程,在模拟过程中便可以发现程序中可能存在的逻辑错误,这是一种比较简单的调试器。比如在Rhapsody,TeleLogic Tau,以及Rational Rose for RT等商业软件中,可以将开发的业务生成代码,通过调用外部编译器编译成Windows或unix程序,然后控制这些程序运行,在程序运行过程中在模型图上动态显示程序的执行轨迹。
上述现有的支持模型开发的商业开发工具一般都是面向嵌入式设备的,对于逻辑简单的业务软件的开发和调试均可以方便实现,但是对于逻辑复杂的电信级业务软件该工具却无法很好地满足使用要求。
另外,上述开发工具中因为被调试的程序没有在最终运行环境中运行,因而所述的调试器不是真正的调试器,而是一种模拟器。这样在真实运行环境中的一些比较隐蔽的错误在模拟时很难发现,在实际运行过程中发现了又很难定位。
除了上述在本地进行编译和调试外,开发基于MDA的电信业务时还存在远程编译和调试的需求。基于MDA的业务一般会在个人PC上进行开发,在业务的真实运行环境(各种unix服务器)上进行编译和调试。这种情况下模型级别的调试只能远程操作。目前实现远程编译和调试的商业软件,如MagicUnix公司的MagicC++,提供了一个Windows上类Visual C++的开发环境,同时通过telnet或自己定义的协议、ftp等协议实现远程的编译和调试。
还有一些软件通过“桩程序”的方式来支持远程编译和调试,比如UniWin,在本地提供了调试器gdb,编译器gcc等服务器程序的“桩程序”,这些“桩程序”是远端程序的一个本地代理,他们的作用就是完成本地和远端的命令和应答传输,实现一个简单中继的功能。
目前的远程编译调试软件都没有提供基于模型开发的功能,还是完全的手工编码方式,这种方式的开发对越来越庞大的软件业务已经有些力不从心;并且,“桩程序”的方式需要为每一个要调用的远程程序做一个“桩程序”,无法执行没有相应桩程序的远程程序,扩展性不好。

发明内容
本发明的目的在于提供一种基于模型驱动进行电信级业务开发的调试方法及装置。
本发明的目的是通过以下技术方案实现的一种基于模型驱动进行电信级业务开发的调试方法,在进行调试操作时,通过根据代码反查图元来实现代码调试器的调试信息与模型显示相结合。
所述调试操作包括单步操作,所述单步操作进一步包括单步跳入、单步跳过、和/或单步跳出,所述单步跳过操作中需要确定下一个图元的位置,其中确定下一个图元的方法包括集成开发环境IDE搜索下一步所有可能的图元,在所述图元的入口处设置临时的断点;命令代码调试器运行被调试的程序;确定程序所停止的断点处为下一个图元的位置;删除所述插入的断点。
所述调试操作包括单步操作,所述单步操作进一步包括单步跳入、单步跳过、和/或单步跳出,所述单步跳过操作中需要确定下一个图元的位置,其中确定下一个图元的方法包括在接收到图元单步的命令后,命令代码调试器不断运行单步命令,每次单步停止时,检查当前代码行所属的图元;
若当前代码属于当前图元,或不属于任何图元,则继续执行单步操作;若当前代码属于另一图元,则图元单步操作停止。
当处理远程文件时,所述方法进一步包括根据本地与远程文件的改变,进行动态文件同步处理;本地IDE调用远程编译器及远程代码调试器,编译及调试远程文件;对所述代码调试器的信息进行解析处理。
所述同步操作的方法包括通过远程文件镜像或文件时间戳比较。
所述根据代码反查图元的方法进一步包括记录每个图元对应的代码的行号,根据行号反查图元;或,在源代码中添加注释信息,根据所述注释反查图元;或,在源代码中插入上报代码,根据上报代码反查图元。
所述插入上报代码的方法进一步包括在图元出口位置对应的代码处插入上报代码,用于上报信息,集成开发环境IDE保存所述信息,并根据所有上报的信息构造程序运行的轨迹。
所述上报的信息包括当前图元标识及要走的出口线标识。
所述上报代码定义为宏的格式。
一种基于模型驱动进行电信级业务开发的调试装置,所述装置包括调试控制模块,用于控制程序文件的调试操作,根据代码反查图元,实现代码调试器的调试信息与模型显示结合起来,实现基于模型驱动的图文调试。
所述装置还包括文件同步模块,用于执行本地文件与远程文件的同步操作,根据本地和远程文件的改变动态执行文件同步操作;抽象进程模块,提供本地进程和远程进程的统一接口,用于调用本地进程和远程进程;解析模块,用于解析远程编译器和代码调试器的输出信息及代码调试器的返回信息。
所述抽象进程模块中进一步包括根据IDE配置的远程服务器信息创建的远程服务器代理,与远程服务器进行信息交互,用于根据远程服务器反馈的远程进程信息创建远程进程代理;远程服务器代理根据远程服务器反馈的信息创建的远程进程代理,用于根据远程服务器反馈的信息与远程进程建立连接,将进程代理对象返回给IDE,从而实现进程代理对象与本地进程对象使用相同的进程接口。
由上述本发明提供的技术方案可以看出,本发明为电信级业务开发工具提供了基于MDA的调试能力,实现了不使用任何模拟器,达到真正的图文调试。


图1为本发明所述方法一种实施例操作流程图;图2为本发明一种实施例远程进程创建过程图;图3为本发明代码和模型图元的对应关系示意图;图4为本发明状态图的状态迁移示意图;图5为本发明插入代码的内容和插入位置示意图;图6为本发明所述装置一种实施例示意图。
具体实施例方式
本发明的核心思想是提供了一种基于模型驱动进行电信级业务开发的调试方法及装置,在图文调试器的底层使用命令行代码调试器,控制业务软件在真实的运行环境中运行,在上层将代码调试器的调试信息与模型显示相结合,实现真实环境下的图文调试。
本发明提供了一种基于模型驱动进行电信级业务开发的调试方法,本实施例以远程调试操作为例进行说明,所述操作过程如图1所示,包括如下步骤步骤1实现本地与远程文件的同步操作;所述同步操作可以通过远程文件镜像、文件时间戳比较等方法来实现,根据本地和远程文件的改变动态执行文件同步操作;步骤2调用远程服务器上的编译器和代码调试器程序;本发明应用client(客户)/server(服务器)的方式,提出了一种抽象进程模型,实现了java中的Process(进程)接口,从java中可以象调用本地程序一样调用远端程序,上层IDE(Integrated Development Environment,集成开发环境)代码不用任何改动就可以与远端程序进行交互。该远程抽象进程模型及调用远程进程过程详见图2及图6描述。
步骤3对上述调用的远程文件的编译/调试信息进行解析;由于不同的编译器/调试器有不同格式的输出,针对这些输出,由相应的解析模块,对上层提供了统一的访问接口,可以实现对远端编译结果进行解析,及控制远端调试过程。
步骤4控制所述解析后的程序文件的调试过程;对编译生成的程序文件进行调试的过程如下所述在模型上调试时,需要实现在图和代码中跟踪业务的运行轨迹、执行单步操作、设置断点、显示调用堆栈、实时显示和修改变量值等操作。
调试操作是在流程中每个图元都生成了相应的代码,并编译成可执行程序的情况下完成的,在跟踪程序执行流程的过程中,不可避免需要在部分位置插入断点、执行单步操作。
所述单步操作包括代码单步、脚本单步和图元单步。代码调试器支持代码行级别的单步,通过向代码调试器发送step、next,或者finish命令,可以分别实现代码单步跳入、跳过和跳出。
脚本单步中,跳入、跳过和跳出的语义与C/C++代码调试时的语义一样,都是针对函数调用的不同单步方法。
图元单步中,对于方法调用图元,跳入表示跳转到相应的方法,对于脚本逻辑块图元,跳入表示跳入用户脚本;跳过是正常的步过一个图元;跳出表示跳出当前的context,如果当前处于某个状态图,将跳出这个状态图。
下面分别针对单步操作中的跳入、跳过及跳出进行说明单步跳入对于单步跳入,在图元单步跳入中,可能会转到其他方法图元,也可能由图形视图跳转到当前脚本图元对应的用户脚本,之后的单步操作转为脚本单步。其他情况下的单步跳入与单步跳过操作相同。
对于脚本单步跳入,如果脚本与代码一一对应,只要对脚本对应的代码进行单步跳入即可。在没有函数调用的地方,脚本单步跳入与单步跳过操作相同。
单步跳过对于单步跳过图元时,需要确定下一个图元的位置。如果已经处于一个结束图元,单步跳过图元与单步跳出操作相同。
为了确定下一个图元的位置。一种方法是IDE搜索下一步所有可能的图元,在它们入口处设置临时的断点,然后命令代码调试器运行被调试的程序。当程序停在某一个断点处时,即可由此确定下一个图元的位置。关于插入的临时断点,可以每次单步前插入,单步后删除。因为这些断点只对这一次单步有用,在其他情况下没有用处,并且断点的数量一般很少,一个或几个,插入和删除不会消耗很多时间。
如果在状态图生成的代码中抛出了某个异常,而代码中没有捕获这个异常,那么程序将不经过所述设置的断点而跳出当前的状态图。异常发生时调用堆栈会不断回滚,直到搜索到一个可以处理该异常的父函数为止。一般的代码调试器,比如gdb,本身提供了catch命令用于设置catchpoint,catchpoint是一种类似breakpoint的断点,可以在加载一个动态库、抛出c++异常或捕获c++异常时将程序停下来。因此可以使用catch catch命令在捕获到一个c++异常时停下来,然后使用一个行单步命令,如next就可以跳转到处理该异常的代码处。根据该处的代码位置,可以反推出图元上的位置,从而实现图元调试。该根据代码反查图元的方法祥见后续介绍。
由于不是所有的代码调试器都支持catch catch命令,经过对catch catch命令进行分析发现,当捕获一个c++异常程序停下来时,代码实际上停在某个捕获异常的库函数上,比如在linux上的glibc库中是_cxa_begin_catch函数,该函数是glibc库提供的一个捕获c++异常时跳转的库函数。在使用不支持catch catch命令的代码调试器时,可以在这个库函数处设置断点,达到与catch catch命令同样的效果。通过这种方法可以处理c++异常。
另一种确定下一个图元的方法是不用断点,而是在用户发出图元单步的命令后,命令代码调试器不断运行单步命令,每次单步停止时,检查当前代码行是属于哪一个图元。这时包括三种情况一种是当前代码行仍然属于当前图元,这种情况下继续命令代码调试器运行单步命令;另一种情况是当前代码行不属于任何一个图元,需要代码调试器继续运行单步命令;最后一种情况是当前代码行属于另一个图元,这时图元单步正常完成,图元单步停止。
这种方法不需要预测所有可能的跳转位置,不需要插入额外的断点,在图元中执行的代码行不多时,代码行单步的方法优点很明显。但在图元中存在很大的循环时,不能适用。对于gdb代码调试器,此时可以采用代码调试器中提供的until命令,用于跳过大循环。until命令实际上仍然通过指令单步的方法执行,根据CPU速度的不同,比next单步快几到十几倍。until命令可以与一个参数配合使用,用于指定一个停止位置。这样代码调试器可以通过在这个停止位置插入一个断点的方法将循环跳过,这样效率会大大提高。
因此,对于代码行单步的方法,可以使用until命令来跳过大循环,此时需要知道大循环结束位置的行号。对于插入断点的方法,需要预测所有可能单步到达的位置,然后在这些位置插入断点。在实现时可以通过比较所述两种方案的实现难度和效果,从而选择其中一种方法。
对于脚本的单步跳过,与脚本单步跳入类似,如果脚本与代码一一对应,只要对脚本对应的代码进行单步跳过即可。
单步跳出对于图元单步跳出有两种方法,一种是在当前的所有结束图元的出口设置临时的断点,然后命令代码调试器运行程序。当程序停在某一个断点后,命令代码调试器不断单步,直到跳出当前的context。
另一种方法基于这样一个假设对于每一个状态图,都对应有一个函数,因此,不断命令代码调试器运行finish命令跳出当前的函数,如果发现跳出了当前的context,包括跳出跳入的图元代码,或跳出当前的状态图,单步跳出结束。
对于用户脚本,因为用户可能会在脚本的中间某一行跳出,比如return语句,如果不解析用户的脚本,则不能确定脚本到底有几个出口。所以脚本的单步跳出也可以采取命令代码调试器不断运行finish命令的做法,直到跳出当前的脚本范围。
如果允许脚本中含有伪同步代码,则只能使用不断单步的方法。
除了上述的单步调试操作外,调试操作还包括开始运行、暂停运行、结束调试等,主要是向代码调试器发送不同的命令,并更新界面显示。
对图元设置断点的操作可以同插入代码的方法一样,在图元入口处插入断点。对脚本设置断点时,找到某行脚本对应的代码行,直接命令代码调试器插入断点即可。由于一般的代码调试器都支持条件断点的设置,因此可以对图元或脚本设置条件断点。
另外,调试时还包括查看和修改局部变量、全局变量,查看表达式的值,查看和修改内存区域,反汇编代码段,查看和修改寄存器,查看调用堆栈等,所述这些操作可以直接使用代码调试器的功能获得。
所述调试操作过程中,涉及到IDE根据上报的代码定位图元的过程,即,根据代码的位置,反向定位出对应的图元,本发明提供了如下三种方法来实现根据代码反查图元1)在每个图元记录对应的代码的行号,根据行号反查图元;如图3所示为图元与代码的对应关系,左边是用户逻辑的一个实现流程,实现流程由迁移线连接起来的块图元组成,迁移线指定了程序的执行流程,从开始图元经过迁移线T0执行到logic0逻辑块图元,之后经过迁移线T1执行到cond0条件分支图元。迁移线本身也可以带有逻辑,也可以生成代码。右边是根据这个流程自动生成的代码样例,用户逻辑实现流程中的每个图元都会生成相应的一份代码,如图3中,开始图元生成了第0到第2行代码;logic0逻辑块图元对应第4到第6行代码;cond0条件分支图元对应第7到第11行代码。在工程中保存了所述图元与代码行号的对应关系,在进行调试时,从所述调试器中获取当前的代码行号,之后通过所述对应关系直接定位到图元上。
例如,调试时被调试程序遇到一个断点停止运行,在IDE中应该显示程序停止到哪个图元上,此过程为程序遇到断点,停止运行,停在内存地址AA处;源代码调试器根据程序中的调试信息,将AA转化为源代码文件SS的LL行;IDE根据图元和生成代码行号的对应关系,根据SS文件的LL行找到对应的图元标识FF;运行界面根据这个标识,显示当前程序的停止位置。
用户添加断点时也会使用这种对应关系,不过方向相反,其过程为用户在IDE界面上,选中一个图元FF,然后在上面添加断点;IDE根据图元和代码行号的对应关系,找到图元FF对应的代码在SS文件的L1到L2行;IDE向源代码调试器发送在SS文件的L1行设置断点的指令;源代码调试器根据被调试程序的调试信息,在L1行对应的内存地址AA处设置断点。
从行号到图元的对应关系可以使用如下格式描述

其中可以看出,cond0逻辑块图元生成的代码对应NewService.cpp文件的第7行到第11行。
2)在源代码中添加特殊的注释信息,根据注释信息反查图元;在由图元生成代码时,使用一些特殊的注释信息来表明当前一部分代码对应哪个图元,如,可以在注释中添加XML标签,然后使用已有的XML解析器对生成的源代码进行解析。当知道一个行号时,可以向前寻找相应的注释信息,分析注释信息就可以找到对应于哪个图元。
3)在源代码中插入特殊的上报代码,根据上报代码反查图元;
在生成的源代码中,在影响图形显示的地方插入上报代码,用以将图形更新信息反馈给IDE。
比如在一个图元对应的代码执行结束位置插入上报代码,当程序运行到这个位置时,上报代码将这个图元的信息反馈给IDE,IDE会记下这个信息,留待以后在图上显示运行轨迹。
在插入上报代码后,调试时每当代码进入一个新的图元,都会有上报信息传到IDE,上报信息会非常频繁,因此不需要每次都更新图形显示,只需要在目标程序被代码调试器暂停下来后,根据最后一次的上报信息更新图形显示即可。
下面介绍插入上报代码的方法在状态图中,一个源状态可以有多条出口迁移线到几个不同的目的状态,或存在多条出口迁移线到同一个目的状态,如图4所示,在图4中,可重用状态图元Re_state0有三条出口迁移线,T1、T2迁移线都迁移到逻辑块图元logic0,T3迁移线迁移到状态图元state0。在这种情况下,为了标识状态跃迁的路径,需要将插入的代码放在每个状态的出口位置。一个图元有几个出口,就在几个地方插入上报代码。因此Re_state0图元生成的代码中将会有三条上报信息,分别对应三个出口点。上报信息包括当前图元的ID以及要走的出口线的ID。IDE根据所有的这些上报信息,即可重新构造出整个程序运行的轨迹。
对于状态图元中的脚本图元,因为脚本中不需要显示运行轨迹,根据代码生成的需要,脚本图元中不能有return语句,不能主动抛出异常,因此不论脚本逻辑中有多少个出口,脚本图元始终只有一个出口,所以对于脚本图元只需要在脚本图元结束位置插入上报代码。
对于带有脚本的迁移线,因其轨迹已经被起始点的状态图元标出,所以不必插入上报代码。
为了支持debug版和release版使用同一份代码,上报代码最好定义为宏的格式,可以采取如下定义方法

这样在上报信息时,只要简单地调用REPORT(...)就可以了。在调试版中定义宏USE_FEEDBACK_CODE,REPORT将会展开成上报代码,在发行版中不定义这个宏,所有的上报代码都将被定义为空,不会对发行版代码产生影响。
在调试过程中,随着被调试程序的运行,REPORT指令通过网络通信或管道,将程序运行过的图元信息顺序上报给IDE。IDE收到这些轨迹后,将其保存在一个轨迹列表中,当程序暂停运行时,可以将这些轨迹显示出来,如图5所示,程序从开始图元start开始执行,在start图元的出口处,Report命令会将start图元的ID和迁移线T0的ID以及当前线程的当前栈帧标识上报给IDE,IDE将该信息记录下来。当程序最终运行到logic1状态图时,运行过的轨迹会标识出来,当前位置也会标识出来。
下面对图2用户创建远程进程的过程进行详细说明,包括首先,启动远程服务器,在IDE中配置远程服务器的ip、端口、用户名、密码等信息;IDE根据所述配置的信息通过网络与远程服务器建立连接,如果配置信息有错,如端口写错、密码错误等,连接将会失败,无法创建远程进程,IDE将通知用户修改配置。如果连接成功,抽象进程模块根据连接信息在本地创建一个服务器代理;IDE向服务器代理发出创建进程的指令,服务器代理通过已经建好的网络连接将该指令发送给远程服务器,由远程服务器创建远程进程;如果远程服务器创建进程失败,则返回一个失败信息给服务器代理,服务器代理将会通知IDE创建进程失败。如果远程服务器创建进程成功,将把所创建的远程进程的信息发回给服务器代理,服务器代理根据这些信息创建一个远程进程代理,该远程进程代理根据远程服务器发回的信息与远程进程建立连接。服务器代理将远程进程代理对象返回给IDE,远程进程代理对象与本地进程对象实现了相同的Process接口,IDE可以与使用本地进程一样使用远程进程代理。
远程进程结束的流程如下如果远程进程结束,其父进程,即远程server将会收到通知信号。远程server收到通知信号后,向与之连接的远程服务器代理对象发送进程结束事件。远程服务器代理收到所述进程结束事件后,根据进程号找到与之对应的远程进程代理对象,激活等待该进程结束的线程,远程进程结束完毕。
IDE主动结束远程进程的流程如下IDE向进程代理对象所在的远程服务器代理发送结束进程命令,远程服务器代理向与之连接的远程server发送关掉进程命令,远程server通过kill将相应的远程进程关掉。远程进程关掉后,远程server收到通知信号,远程server向与之连接的远程服务器代理发送进程结束事件,远程服务器代理收到进程结束事件后,根据进程号找到与之对应的远程进程代理对象,激活等待该进程结束的线程,远程进程结束完毕。
可以看出,抽象进程模块将远程进程的信息封装起来,IDE在配置好远程服务器的信息后,可以象使用本地进程一样使用远程进程,要运行的进程没有任何限制,大大方便了远程编译调试的开发。
本发明提供一种基于模型驱动进行电信级业务开发的调试装置,所述装置结构示意图如图6所示,该装置包括文件同步模块、抽象进程模块、解析模块、调试控制模块。
所述文件同步模块用于执行同步本地文件与远程文件的操作,所述同步操作可以通过远程文件镜像、文件时间戳比较等方法来实现,根据本地和远程文件的改变动态执行文件同步操作。
所述抽象进程模块与远程服务器相连,可以根据IDE配置的远程服务器的信息创建远程服务器代理,所述远程服务器代理用于与远程服务器建立连接,与远程服务器进行信息交互,并根据远程服务器反馈的远程进程信息创建远程进程代理,该远程进程代理根据远程服务器反馈的信息与远程进程建立连接,远程服务器代理将进程代理对象返回给IDE,从而实现进程代理对象与本地进程对象使用相同的进程接口,IDE可以同获取本地进程一样获取远程进程。
所述解析模块用于解析远程编译器和代码调试器的输出信息,判断所述远程编译操作是否异常,并解析代码调试器的返回信息。
所述调试控制模块,用于控制程序文件的调试操作,使调试过程中代码调试器的控制信息和运行结果与模型显示和控制命令结合起来,实现真正的图文调试。
综上所述,本发明为电信级业务开发工具提供了基于MDA的调试能力,实现了不使用任何模拟器,达到真正的图文调试。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种基于模型驱动进行电信级业务开发的调试方法,其特征在于,在进行调试操作时,通过根据代码反查图元来实现代码调试器的调试信息与模型显示相结合。
2.如权利要求1所述的一种基于模型驱动进行电信级业务开发的调试方法,其特征在于,所述调试操作包括单步操作,所述单步操作进一步包括单步跳入、单步跳过、和/或单步跳出,所述单步跳过操作中需要确定下一个图元的位置,其中确定下一个图元的方法包括集成开发环境IDE搜索下一步所有可能的图元,在所述图元的入口处设置临时的断点;命令代码调试器运行被调试的程序;确定程序所停止的断点处为下一个图元的位置;删除所述插入的断点。
3.如权利要求1所述的一种基于模型驱动进行电信级业务开发的调试方法,其特征在于,所述调试操作包括单步操作,所述单步操作进一步包括单步跳入、单步跳过、和/或单步跳出,所述单步跳过操作中需要确定下一个图元的位置,其中确定下一个图元的方法包括在接收到图元单步的命令后,命令代码调试器不断运行单步命令,每次单步停止时,检查当前代码行所属的图元;若当前代码属于当前图元,或不属于任何图元,则继续执行单步操作;若当前代码属于另一图元,则图元单步操作停止。
4.如权利要求1所述一种基于模型驱动进行电信级业务开发的调试方法,其特征在于,当处理远程文件时,所述方法进一步包括根据本地与远程文件的改变,进行动态文件同步处理;本地IDE调用远程编译器及远程代码调试器,编译及调试远程文件;对所述代码调试器的信息进行解析处理。
5.如权利要求4所述一种基于模型驱动进行电信级业务开发的调试方法,其特征在于,所述同步操作的方法包括通过远程文件镜像或文件时间戳比较。
6.如权利要求1至5中任一项所述的一种基于模型驱动进行电信级业务开发的调试方法,其特征在于,所述根据代码反查图元的方法进一步包括记录每个图元对应的代码的行号,根据行号反查图元;或,在源代码中添加注释信息,根据所述注释反查图元;或,在源代码中插入上报代码,根据上报代码反查图元。
7.如权利要求6所述的一种基于模型驱动进行电信级业务开发的调试方法,其特征在于,所述插入上报代码的方法进一步包括在图元出口位置对应的代码处插入上报代码,用于上报信息,集成开发环境IDE保存所述信息,并根据所有上报的信息构造程序运行的轨迹。
8.如权利要求7所述的一种基于模型驱动进行电信级业务开发的调试方法,其特征在于,所述上报的信息包括当前图元标识及要走的出口线标识。
9.如权利要求7所述的一种基于模型驱动进行电信级业务开发的调试方法,其特征在于,所述上报代码定义为宏的格式。
10.一种基于模型驱动进行电信级业务开发的调试装置,其特征在于,所述装置包括调试控制模块,用于控制程序文件的调试操作,根据代码反查图元,实现代码调试器的调试信息与模型显示结合起来,实现基于模型驱动的图文调试。
11.如权利要求10所述的一种基于模型驱动进行电信级业务开发的调试装置,其特征在于,所述装置还包括文件同步模块,用于执行本地文件与远程文件的同步操作,根据本地和远程文件的改变动态执行文件同步操作;抽象进程模块,提供本地进程和远程进程的统一接口,用于调用本地进程和远程进程;解析模块,用于解析远程编译器和代码调试器的输出信息及代码调试器的返回信息。
12.如权利要求11所述的一种基于模型驱动进行电信级业务开发的调试装置,其特征在于,所述抽象进程模块中进一步包括根据IDE配置的远程服务器信息创建的远程服务器代理,与远程服务器进行信息交互,用于根据远程服务器反馈的远程进程信息创建远程进程代理;远程服务器代理根据远程服务器反馈的信息创建的远程进程代理,用于根据远程服务器反馈的信息与远程进程建立连接,将进程代理对象返回给IDE,从而实现进程代理对象与本地进程对象使用相同的进程接口。
全文摘要
本发明涉及通讯技术领域中一种基于模型驱动进行电信级业务开发的调试方法及装置。在进行图文调试时,通过根据代码反查图元,实现将代码调试器的调试信息与模型显示结合起来,完成基于模型驱动的电信级业务的图文调试。本发明为电信级业务开发工具提供了基于MDA的调试能力,实现了不使用任何模拟器,达到真正的图文调试,并实现了远程文件的基于模型驱动的电信级业务的图文调试。
文档编号G06F11/36GK101046766SQ20061007600
公开日2007年10月3日 申请日期2006年4月24日 优先权日2006年4月24日
发明者蒋国文, 巨泽建 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1