一种在三层架构下对应用程序进行一体化调试地方法
技术领域
本发明涉及一种在三层架构下对应用程序进行一体化调试的方法,能应用于大型三层架构软件开发中,缩短服务端程序的开发、调试周期,提高软件质量。
背景技术
目前在大型三层架构软件开发的程序调试中,常常使用中间件,如TUXEDO等。开发人员在通过使用这些中间件调试时,必须输入繁琐的调试命令、测试数据,等命令运行结束才能看到程序的运行结果,即对于开发人员来说调试过程是一个黑盒子。由于在调试中无法及时看到程序运行的中间结果,这种传统的使用中间件的调试方法对于开发人员检查程序的具体错误极不方便,并且由于必须输入各式各样的调试命令及数据,调试效率也不高。
发明内容
本发明要解决的技术问题是提供一种在三层架构下对应用程序进行一体化调试的方法,设计并实现一种较为简便、直观的前后台一体化的程序调试方法。该方法较中间层本身所提供的系统调试命令更易掌握,从而也更易调试出正确的程序代码。
为解决上述技术问题,本发明利用UNIX平台上的文件输入输出(I/O)技术,首先启动需要进行调试的应用程序,并同时打开记录调试过程的记录文件,如果所述记录文件尚不存在,创建并打开记录文件;然后运行并调试所述应用程序,并将调试过程及结果实时记录到所述的记录文件中;结束所述应用程序的调试,同时自动关闭并保存所述的记录文件。本发明可以屏蔽调试中间件的繁杂调试命令,开发人员可以通过调用应用程序(Application ProgrammingInterface、API)接口函数将服务端调试的应用程序的中间结果输出记录到指定文本文件中。在应用程序处理结束后,开发人员可以通过检查该文件记录的中间结果,较方便的判断分析应用程序的出错点和出错原因。
本发明还利用UNIX和Windows之间的跨平台实时通讯技术,首先启动需要进行调试的应用程序,并同时在调试前台创建调试窗口;运行并调试所述应用程序,并将调试中间结果实时发送到所述调试窗口中;结束所述应用程序的调试,同时自动关闭前台调试窗口。将程序运行的中间结果实时展现在客户端的弹出窗口、即前台窗口中,而无须等待后台程序运行结束。该方法更加适合开发人员直接在客户端实时监控应用程序的执行情况,发现程序的内在错误。
附图说明
图1是本发明一个具体实施例的程序流程图;
图2是本发明具体运用的效果举例,是图1所示的方法的应用;
图3是本发明另一个具体实施例的程序流程图;
图4是本发明具体运用的效果举例,是图3所示的方法的应用。
具体实施方式
下面结合附图对本发明作进一步详细的说明。
如图1、图2所示,是本发明的一个具体实施例。
在该实施例中,利用UNIX系统平台上的文件输入输出(I/O)技术,调试人员将的调试中间过程产生的文本或变量输出记录到指定的调试记录文件中。例如在应用TUXEDO中间件调试时,对TUXEDO中运行的每个处理程序(service)自动生成对应的调试记录文本文件,即.trace文件。为方便和帮助开发人员灵活指定输出的程序中间运行结果,上述功能封装为应用程序接口(API)形式,使上述功能封装成API函数形式的程序如下所示。
/*后台输出调试API函数*/ int EDLog(int type,int level,char*formate,...) { static int cqid; va_liist argptr; int cnt; int ret=0; char buffer[50000]; /*解析待打印参数*/ va_start(argptr,formate); cnt=vsprintf(buffer,formate,argptr); va_end(argptr); switch(type) { case 1; /*将中间结果输出到.trace文件中*/ ret=EDPrintTrace(buffer);<!-- SIPO <DP n="3"> --><dp n="d3"/> break; case 2: /*将中间结果输出到数据表中*/ cqid=EDOpenQue(); printf("rsend cqid:%d\n",cqid); ret=EDEnterQue(cqid,buffer,MAX_LEN); if((cqid<0)‖(ret<0)) { ret=1; } else { ret=0; } break; } return(ret); }
开发调试人员只要通过该接口,即可很方便地实现程序中间结果的实时记录,当所调试地应用程序运行结束后,中间运行结果自动输出保存到记录文件中并关闭该记录文件。
考虑到随着应用程序调试运行次数的不断增加,其对应的记录调试结果的文本文件的所占空间也在不断扩大,为减小系统开销,本发明采用只存储最近三次的文本文件,并以天为分段记录时间,即可以.trace1,.trace2和.trace3分别为后缀名,分别代表本次调试工作日、前次调试工作日和再前次调试工作日的记录调试文本文件,并依次覆盖。
如图3、图4所示,是本发明的另一个具体实施例。
在该实施例中,利用UNIX系统平台和Windows系统平台之间的跨系统实时通讯技术,通过用户数据报协议(User Datagram Protocol,UDP)实时将UNIX平台上的应用程序的调试信息传到Windows客户端。由于前后台的通讯是不经过中间层软件的,所以可以实现实时的通讯,而不必等应用程序执行完毕。开发人员同样可以通过调用封装为应用程序接口形式(API)的函数实现上述功能,使上述功能封装成API函数形式的程序如下所示。
/*前台输出调试API函数*/int EILog(int type,int level,char*formate,...){va_list argptr;int cnt;char buffer[50000];/*解析待打印参数*/va_start(argptr,formate);cnt=vsprintf(buffer,formate,argptr);va_end(argptr);<!-- SIPO <DP n="5"> --><dp n="d5"/>/*将中间结果实时传送至前台弹出窗口*/if(type==1){cnt=debuginfo(buffer);EIPrintTrace("EILog Info--%s--",buffer);}return(cnt);}