專利名稱:一種在三層架構(gòu)下對(duì)應(yīng)用程序進(jìn)行一體化調(diào)試的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種在三層架構(gòu)下對(duì)應(yīng)用程序進(jìn)行一體化調(diào)試地方法,能應(yīng)用于大型三層架構(gòu)軟件開(kāi)發(fā)中,縮短服務(wù)端程序的開(kāi)發(fā)、調(diào)試周期,提高軟件質(zhì)量。
背景技術(shù):
目前在大型三層架構(gòu)軟件開(kāi)發(fā)的程序調(diào)試中,常常使用中間件,如TUXEDO等。開(kāi)發(fā)人員在通過(guò)使用這些中間件調(diào)試時(shí),必須輸入繁瑣的調(diào)試命令、測(cè)試數(shù)據(jù),等命令運(yùn)行結(jié)束才能看到程序的運(yùn)行結(jié)果,即對(duì)于開(kāi)發(fā)人員來(lái)說(shuō)調(diào)試過(guò)程是一個(gè)黑盒子。由于在調(diào)試中無(wú)法及時(shí)看到程序運(yùn)行的中間結(jié)果,這種傳統(tǒng)的使用中間件的調(diào)試方法對(duì)于開(kāi)發(fā)人員檢查程序的具體錯(cuò)誤極不方便,并且由于必須輸入各式各樣的調(diào)試命令及數(shù)據(jù),調(diào)試效率也不高。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題是提供一種在三層架構(gòu)下對(duì)應(yīng)用程序進(jìn)行一體化調(diào)試的方法,設(shè)計(jì)并實(shí)現(xiàn)一種較為簡(jiǎn)便、直觀的前后臺(tái)一體化的程序調(diào)試方法。該方法較中間層本身所提供的系統(tǒng)調(diào)試命令更易掌握,從而也更易調(diào)試出正確的程序代碼。
為解決上述技術(shù)問(wèn)題,本發(fā)明利用UNIX平臺(tái)上的文件輸入輸出(I/O)技術(shù),首先啟動(dòng)需要進(jìn)行調(diào)試的應(yīng)用程序,并同時(shí)打開(kāi)記錄調(diào)試過(guò)程的記錄文件,如果所述記錄文件尚不存在,創(chuàng)建并打開(kāi)記錄文件;然后運(yùn)行并調(diào)試所述應(yīng)用程序,并將調(diào)試過(guò)程及結(jié)果實(shí)時(shí)記錄到所述的記錄文件中;結(jié)束所述應(yīng)用程序的調(diào)試,同時(shí)自動(dòng)關(guān)閉并保存所述的記錄文件。本發(fā)明可以屏蔽調(diào)試中間件的繁雜調(diào)試命令,開(kāi)發(fā)人員可以通過(guò)調(diào)用應(yīng)用程序(Application ProgrammingInterface、API)接口函數(shù)將服務(wù)端調(diào)試的應(yīng)用程序的中間結(jié)果輸出記錄到指定文本文件中。在應(yīng)用程序處理結(jié)束后,開(kāi)發(fā)人員可以通過(guò)檢查該文件記錄的中間結(jié)果,較方便的判斷分析應(yīng)用程序的出錯(cuò)點(diǎn)和出錯(cuò)原因。
本發(fā)明還利用UNIX和Windows之間的跨平臺(tái)實(shí)時(shí)通訊技術(shù),首先啟動(dòng)需要進(jìn)行調(diào)試的應(yīng)用程序,并同時(shí)在調(diào)試前臺(tái)創(chuàng)建調(diào)試窗口;運(yùn)行并調(diào)試所述應(yīng)用程序,并將調(diào)試中間結(jié)果實(shí)時(shí)發(fā)送到所述調(diào)試窗口中;結(jié)束所述應(yīng)用程序的調(diào)試,同時(shí)自動(dòng)關(guān)閉前臺(tái)調(diào)試窗口。將程序運(yùn)行的中間結(jié)果實(shí)時(shí)展現(xiàn)在客戶端的彈出窗口、即前臺(tái)窗口中,而無(wú)須等待后臺(tái)程序運(yùn)行結(jié)束。該方法更加適合開(kāi)發(fā)人員直接在客戶端實(shí)時(shí)監(jiān)控應(yīng)用程序的執(zhí)行情況,發(fā)現(xiàn)程序的內(nèi)在錯(cuò)誤。
圖1是本發(fā)明一個(gè)具體實(shí)施例的程序流程圖2是本發(fā)明具體運(yùn)用的效果舉例,是圖1所示的方法的應(yīng)用;
圖3是本發(fā)明另一個(gè)具體實(shí)施例的程序流程圖4是本發(fā)明具體運(yùn)用的效果舉例,是圖3所示的方法的應(yīng)用。
具體實(shí)施例方式
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。
如圖1、圖2所示,是本發(fā)明的一個(gè)具體實(shí)施例。
在該實(shí)施例中,利用UNIX系統(tǒng)平臺(tái)上的文件輸入輸出(I/O)技術(shù),調(diào)試人員將的調(diào)試中間過(guò)程產(chǎn)生的文本或變量輸出記錄到指定的調(diào)試記錄文件中。例如在應(yīng)用TUXEDO中間件調(diào)試時(shí),對(duì)TUXEDO中運(yùn)行的每個(gè)處理程序(service)自動(dòng)生成對(duì)應(yīng)的調(diào)試記錄文本文件,即.trace文件。為方便和幫助開(kāi)發(fā)人員靈活指定輸出的程序中間運(yùn)行結(jié)果,上述功能封裝為應(yīng)用程序接口(API)形式,使上述功能封裝成API函數(shù)形式的程序如下所示。
/*后臺(tái)輸出調(diào)試API函數(shù)*/ int EDLog(int type,int level,char*formate,...) { static int cqid; va_liist argptr; int cnt; int ret=0; char buffer[50000]; /*解析待打印參數(shù)*/ va_start(argptr,formate); cnt=vsprintf(buffer,formate,argptr); va_end(argptr); switch(type) { case 1; /*將中間結(jié)果輸出到.trace文件中*/ ret=EDPrintTrace(buffer);<!-- SIPO <DP n="3"> --><dp n="d3"/> break; case 2: /*將中間結(jié)果輸出到數(shù)據(jù)表中*/ 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); }
開(kāi)發(fā)調(diào)試人員只要通過(guò)該接口,即可很方便地實(shí)現(xiàn)程序中間結(jié)果的實(shí)時(shí)記錄,當(dāng)所調(diào)試地應(yīng)用程序運(yùn)行結(jié)束后,中間運(yùn)行結(jié)果自動(dòng)輸出保存到記錄文件中并關(guān)閉該記錄文件。
考慮到隨著應(yīng)用程序調(diào)試運(yùn)行次數(shù)的不斷增加,其對(duì)應(yīng)的記錄調(diào)試結(jié)果的文本文件的所占空間也在不斷擴(kuò)大,為減小系統(tǒng)開(kāi)銷,本發(fā)明采用只存儲(chǔ)最近三次的文本文件,并以天為分段記錄時(shí)間,即可以.trace1,.trace2和.trace3分別為后綴名,分別代表本次調(diào)試工作日、前次調(diào)試工作日和再前次調(diào)試工作日的記錄調(diào)試文本文件,并依次覆蓋。
如圖3、圖4所示,是本發(fā)明的另一個(gè)具體實(shí)施例。
在該實(shí)施例中,利用UNIX系統(tǒng)平臺(tái)和Windows系統(tǒng)平臺(tái)之間的跨系統(tǒng)實(shí)時(shí)通訊技術(shù),通過(guò)用戶數(shù)據(jù)報(bào)協(xié)議(User Datagram Protocol,UDP)實(shí)時(shí)將UNIX平臺(tái)上的應(yīng)用程序的調(diào)試信息傳到Windows客戶端。由于前后臺(tái)的通訊是不經(jīng)過(guò)中間層軟件的,所以可以實(shí)現(xiàn)實(shí)時(shí)的通訊,而不必等應(yīng)用程序執(zhí)行完畢。開(kāi)發(fā)人員同樣可以通過(guò)調(diào)用封裝為應(yīng)用程序接口形式(API)的函數(shù)實(shí)現(xiàn)上述功能,使上述功能封裝成API函數(shù)形式的程序如下所示。
/*前臺(tái)輸出調(diào)試API函數(shù)*/int EILog(int type,int level,char*formate,...){va_list argptr;int cnt;char buffer[50000];/*解析待打印參數(shù)*/va_start(argptr,formate);cnt=vsprintf(buffer,formate,argptr);va_end(argptr);<!-- SIPO <DP n="5"> --><dp n="d5"/>/*將中間結(jié)果實(shí)時(shí)傳送至前臺(tái)彈出窗口*/if(type==1){cnt=debuginfo(buffer);EIPrintTrace("EILog Info--%s--",buffer);}return(cnt);}
權(quán)利要求
1、一種在三層架構(gòu)下對(duì)應(yīng)用程序進(jìn)行一體化調(diào)試的方法,包括啟動(dòng)需要進(jìn)行調(diào)試的應(yīng)用程序,并同時(shí)打開(kāi)記錄調(diào)試過(guò)程的記錄文件,如果所述記錄文件尚不存在,創(chuàng)建并打開(kāi)記錄文件;運(yùn)行并調(diào)試所述應(yīng)用程序,并將調(diào)試過(guò)程及結(jié)果實(shí)時(shí)記錄到所述的記錄文件中;結(jié)束所述應(yīng)用程序的調(diào)試,同時(shí)自動(dòng)關(guān)閉并保存所述的記錄文件。
2、根據(jù)權(quán)利要求書(shū)1所述的在三層架構(gòu)下對(duì)應(yīng)用程序進(jìn)行一體化調(diào)試的方法,其特征在于所述創(chuàng)建并打開(kāi)記錄文件,并將調(diào)試過(guò)程及結(jié)果實(shí)時(shí)記錄到所述的記錄文件中采取封裝成應(yīng)用程序接口的方法。
3、根據(jù)權(quán)利要求書(shū)1所述的在三層架構(gòu)下對(duì)應(yīng)用程序進(jìn)行一體化調(diào)試的方法,其特征在于所述記錄文件為文本文件。
4、根據(jù)權(quán)利要求書(shū)1所述的在三層架構(gòu)下對(duì)應(yīng)用程序進(jìn)行一體化調(diào)試的方法,其特征在于所述記錄文件只記錄最近三次的調(diào)試過(guò)程。
5、一種在三層架構(gòu)下對(duì)應(yīng)用程序進(jìn)行一體化調(diào)試的方法,包括啟動(dòng)需要進(jìn)行調(diào)試的應(yīng)用程序,并同時(shí)在調(diào)試前臺(tái)創(chuàng)建調(diào)試窗口;運(yùn)行并調(diào)試所述應(yīng)用程序,并將調(diào)試中間結(jié)果實(shí)時(shí)發(fā)送到所述調(diào)試窗口中;結(jié)束所述應(yīng)用程序的調(diào)試,同時(shí)自動(dòng)關(guān)閉前臺(tái)調(diào)試窗口。
6、根據(jù)權(quán)利要求書(shū)5所述的在三層架構(gòu)下對(duì)應(yīng)用程序進(jìn)行一體化調(diào)試的方法,其特征在于在創(chuàng)建調(diào)試窗口后,如調(diào)試窗口連續(xù)三小時(shí)未接受中間結(jié)果則自動(dòng)關(guān)閉。
全文摘要
本發(fā)明公開(kāi)了一種在三層架構(gòu)下對(duì)應(yīng)用程序進(jìn)行一體化調(diào)試的方法,設(shè)計(jì)并實(shí)現(xiàn)一種較為簡(jiǎn)便、直觀的前后臺(tái)一體化的程序調(diào)試方法。本發(fā)明方法包括啟動(dòng)需要進(jìn)行調(diào)試的應(yīng)用程序,并同時(shí)打開(kāi)記錄調(diào)試過(guò)程的記錄文件,如果所述記錄文件尚不存在,創(chuàng)建并打開(kāi)記錄文件;運(yùn)行并調(diào)試所述應(yīng)用程序,并將調(diào)試過(guò)程及結(jié)果實(shí)時(shí)記錄到所述的記錄文件中;結(jié)束所述應(yīng)用程序的調(diào)試,同時(shí)自動(dòng)關(guān)閉并保存所述的記錄文件。
文檔編號(hào)G06F11/36GK1841339SQ20051002482
公開(kāi)日2006年10月4日 申請(qǐng)日期2005年4月1日 優(yōu)先權(quán)日2005年4月1日
發(fā)明者胡兵, 陳曉東 申請(qǐng)人:上海寶信軟件股份有限公司