專利名稱:一種錯(cuò)誤定位輔助方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息處理領(lǐng)域,特別是涉及一種錯(cuò)誤定位輔助方法及裝置。
技術(shù)背景在多層結(jié)構(gòu)的業(yè)務(wù)處理系統(tǒng)中,隨著業(yè)務(wù)量的提高,系統(tǒng)實(shí)現(xiàn)越來(lái)越復(fù)雜, 通常呈現(xiàn)為典型的多層架構(gòu)。在這種多層應(yīng)用架構(gòu)下, 一個(gè)客戶端發(fā)起的業(yè)務(wù) 處理請(qǐng)求被通信中間件傳送到相應(yīng)的業(yè)務(wù)邏輯層應(yīng)用服務(wù)器上處理,而在業(yè)務(wù) 邏輯層應(yīng)用服務(wù)器的處理過(guò)程中,可能需要多次調(diào)用不同的原子服務(wù)層應(yīng)用服 務(wù)器提供的服務(wù)來(lái)一起完成業(yè)務(wù)處理,最后由業(yè)務(wù)邏輯層應(yīng)用服務(wù)器將處理結(jié) 果返回客戶端。在此類系統(tǒng)的開(kāi)發(fā)過(guò)程中,由于系統(tǒng)復(fù)雜導(dǎo)致出現(xiàn)業(yè)務(wù)錯(cuò)誤和系統(tǒng)錯(cuò)誤的 可能性也隨之提高,因此當(dāng)出現(xiàn)系統(tǒng)異常時(shí),快速定位到出錯(cuò)的程序單元就成 為了要解決的技術(shù)疑難。起初通常會(huì)采用錯(cuò)誤代碼的方式顯示錯(cuò)誤,即通過(guò)錯(cuò)誤代碼的唯一性來(lái)標(biāo) 識(shí)出發(fā)生錯(cuò)誤的種類,或者采用模糊報(bào)錯(cuò)的方式顯示錯(cuò)誤,但是這些方法都不 可避免的存在著共用程序單元報(bào)錯(cuò)時(shí),無(wú)法確定是哪個(gè)程序單元對(duì)它的調(diào)用引 起的。但實(shí)際上,出錯(cuò)時(shí)不僅要知道出錯(cuò)的函數(shù)名,還需要知道出錯(cuò)的函數(shù)是 在被哪個(gè)函數(shù)調(diào)用的。為解決上述問(wèn)題,現(xiàn)有技術(shù)可以分析業(yè)務(wù)處理流程,對(duì)所有執(zhí)行的程序單 元進(jìn)行逐個(gè)跟蹤,以找到錯(cuò)誤原因。例如,可以在程序中的每個(gè)函數(shù)調(diào)用的入 口與出口維護(hù)一個(gè)調(diào)用棧,在每個(gè)程序單元的函數(shù)進(jìn)入和退出時(shí),通過(guò)調(diào)用棧記錄函數(shù)調(diào)用序列,以此來(lái)反映出出錯(cuò)的函數(shù)名,以及出4晉的函數(shù)是被哪個(gè)函 數(shù)調(diào)用的。但是,該現(xiàn)有技術(shù)的方法中,無(wú)論處理是正常還是出錯(cuò),都需要維護(hù)調(diào)用 棧,因此存在維護(hù)調(diào)用棧的開(kāi)銷。尤其是當(dāng)系統(tǒng)非常復(fù)雜時(shí),維護(hù)開(kāi)銷會(huì)比較 大,甚發(fā)明內(nèi)容有鑒于此,本發(fā)明的目的在于提供一種錯(cuò)誤定位方法及裝置,能夠準(zhǔn)確定 位錯(cuò)誤位置,并降低錯(cuò)誤定位所需的維護(hù)開(kāi)銷。為實(shí)現(xiàn)上述目的,本發(fā)明提供了如下方案 一種錯(cuò)誤定位輔助方法,包括當(dāng)業(yè)務(wù)處理單元返回業(yè)務(wù)處理出錯(cuò)消息時(shí),將所述業(yè)務(wù)處理單元的標(biāo)識(shí)附 加到所述的業(yè)務(wù)處理出錯(cuò)消息中;當(dāng)調(diào)用所述業(yè)務(wù)處理單元的各級(jí)上層業(yè)務(wù)處理單元接收到所述業(yè)務(wù)處理 出錯(cuò)消息并需要上其上層調(diào)用返回時(shí),分別將所述各級(jí)上層業(yè)務(wù)處理單元的標(biāo) 識(shí)按照調(diào)用順序附加到所述業(yè)務(wù)處理出錯(cuò)消息中,直到請(qǐng)求發(fā)起端收到包含有 業(yè)務(wù)處理單元調(diào)用序列的業(yè)務(wù)處理出錯(cuò)消息。優(yōu)選的,還包括所述請(qǐng)求發(fā)起端根據(jù)所述按照調(diào)用順序附加的各級(jí)業(yè)務(wù)處理單元的標(biāo)識(shí), 進(jìn)行錯(cuò)誤定位。優(yōu)選的,通過(guò)生成調(diào)用棧的方式將各級(jí)業(yè)務(wù)處理單元的標(biāo)識(shí)附加在所述業(yè) 務(wù)處理出錯(cuò)消息中。優(yōu)選的,所述業(yè)務(wù)處理單元包括函數(shù)或服務(wù);所述業(yè)務(wù)處理單元的標(biāo)識(shí)包 括函數(shù)名或服務(wù)名。優(yōu)選的,所述業(yè)務(wù)處理單元及調(diào)用所述業(yè)務(wù)處理單元的各級(jí)上層業(yè)務(wù)處理 單元在同一進(jìn)程內(nèi)或者分布在多臺(tái)服務(wù)器的多個(gè)進(jìn)程上。優(yōu)選的,還包括分析所述業(yè)務(wù)處理單元調(diào)用序列,分別標(biāo)識(shí)出遠(yuǎn)程調(diào)用的業(yè)務(wù)處理單元, 以及被上個(gè)函數(shù)作為內(nèi)部子函數(shù)調(diào)用的業(yè)務(wù)處理單元。 一種錯(cuò)誤定位輔助裝置,包括出錯(cuò)標(biāo)識(shí)附加模塊,用于當(dāng)業(yè)務(wù)處理單元返回業(yè)務(wù)處理出錯(cuò)消息時(shí),將所 述業(yè)務(wù)處理單元的標(biāo)識(shí)附加到所述的業(yè)務(wù)處理出錯(cuò)消息中;分級(jí)標(biāo)識(shí)附加模塊,用于當(dāng)調(diào)用所述業(yè)務(wù)處理單元的各級(jí)上層業(yè)務(wù)處理單 元接收到所述業(yè)務(wù)處理出錯(cuò)消息并需要上其上層調(diào)用返回時(shí),分別將所述各級(jí) 上層業(yè)務(wù)處理單元的標(biāo)識(shí)按照調(diào)用順序附加到所述業(yè)務(wù)處理出錯(cuò)消息中,直到客戶端收到包含有業(yè)務(wù)處理單元調(diào)用序列的業(yè)務(wù)處理出^"消息。優(yōu)選的,通過(guò)生成調(diào)用棧的方式將各級(jí)業(yè)務(wù)處理單元的標(biāo)識(shí)附加在所述業(yè) 務(wù)處理出錯(cuò)消息中。優(yōu)選的,所述業(yè)務(wù)處理單元包括函數(shù)或服務(wù);所述業(yè)務(wù)處理單元的標(biāo)識(shí)包括函數(shù)名或服務(wù)名。優(yōu)選的,所述業(yè)務(wù)處理單元及調(diào)用所述業(yè)務(wù)處理單元的各級(jí)上層業(yè)務(wù)處理 單元在同 一進(jìn)程內(nèi)或者分布在多臺(tái)服務(wù)器的多個(gè)進(jìn)程上。優(yōu)選的,還包括分析模塊,用于分析所述業(yè)務(wù)處理單元調(diào)用序列,分別標(biāo)識(shí)出遠(yuǎn)程調(diào)用的 業(yè)務(wù)處理單元,以及被上個(gè)函數(shù)作為內(nèi)部子函數(shù)調(diào)用的業(yè)務(wù)處理單元。沖艮據(jù)本發(fā)明提供的具體實(shí)施例,本發(fā)明公開(kāi)了以下技術(shù)效果本發(fā)明能夠當(dāng)業(yè)務(wù)處理單元返回業(yè)務(wù)處理出錯(cuò)消息時(shí),將所述業(yè)務(wù)處理單 元的標(biāo)識(shí)附加到所述的業(yè)務(wù)處理出錯(cuò)消息中;并且,當(dāng)調(diào)用所述業(yè)務(wù)處理單元 的各級(jí)上層業(yè)務(wù)處理單元接收到所述業(yè)務(wù)處理出錯(cuò)消息并需要上其上層調(diào)用 返回時(shí),分別將所述各級(jí)上層業(yè)務(wù)處理單元的標(biāo)識(shí)按照調(diào)用順序附加到所述業(yè) 務(wù)處理出錯(cuò)消息中,直到客戶端收到所述業(yè)務(wù)處理出錯(cuò)消息??梢?jiàn),本發(fā)明只 在出錯(cuò)時(shí)才反向生成調(diào)用序列(由所述按照調(diào)用順序附加的各級(jí)業(yè)務(wù)處理單元 的標(biāo)識(shí)示出),因此,在大部分業(yè)務(wù)處理正常的情況下是沒(méi)有額外開(kāi)銷的,從 而從整體上降低了錯(cuò)誤定位所需的維護(hù)開(kāi)銷。另夕卜,通過(guò)本發(fā)明實(shí)施例才是供的上述方法,跨進(jìn)程的遠(yuǎn)程調(diào)用與進(jìn)程內(nèi)部 函數(shù)的調(diào)用,在出錯(cuò)消息的處理上完全一致,因此,各級(jí)調(diào)用的業(yè)務(wù)處理單元 可以在同一進(jìn)程內(nèi),也可以分布在多臺(tái)服務(wù)器的多個(gè)進(jìn)程上。
圖l是本發(fā)明實(shí)施例提供的方法的流程圖;圖2是本發(fā)明實(shí)施例提供的另一方法的流程圖;圖3是本發(fā)明實(shí)施例提供的裝置的示意圖。
具體實(shí)施方式
為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。參見(jiàn)圖1,本發(fā)明實(shí)施例提供的錯(cuò)誤定位輔助方法包括以下步驟S101:當(dāng)業(yè)務(wù)處理單元返回業(yè)務(wù)處理出錯(cuò)消息時(shí),將所述業(yè)務(wù)處理單元的 標(biāo)識(shí)附加到所述的業(yè)務(wù)處理出錯(cuò)消息中;S102:當(dāng)調(diào)用所述業(yè)務(wù)處理單元的各級(jí)上層業(yè)務(wù)處理單元接收到所述業(yè)務(wù) 處理出錯(cuò)消息并需要上其上層調(diào)用返回時(shí),分別將所述各級(jí)上層業(yè)務(wù)處理單元 的標(biāo)識(shí)^換照調(diào)用順序附加到所述業(yè)務(wù)處理出錯(cuò)消息中,直到客戶端收到所述業(yè) 務(wù)處理出錯(cuò)消息。首先需要說(shuō)明的是,本發(fā)明實(shí)施例是基于消息通信及處理平臺(tái),在這種平 臺(tái)上構(gòu)建的信息系統(tǒng)可以由多進(jìn)程處理,是一種基于服務(wù)的架構(gòu),即消息通信 及處理平臺(tái)以遠(yuǎn)程調(diào)用方式對(duì)外提供服務(wù)(服務(wù)的使用者可以稱為客戶端), 在服務(wù)實(shí)現(xiàn)時(shí)有可能調(diào)用其他消息通信息及平臺(tái)提供的服務(wù)(稱為子服務(wù))。 服務(wù)的使用者、多個(gè)消息通信及處理平臺(tái)之間通過(guò)消息通信完成信息交換,一 般是使用者發(fā)出請(qǐng)求消息,平臺(tái)處理請(qǐng)求消息之后返回應(yīng)答消息。為了進(jìn)行準(zhǔn)確地錯(cuò)誤定位,又從整體上降低錯(cuò)誤定位過(guò)程帶來(lái)的維護(hù)開(kāi) 銷,本發(fā)明實(shí)施例可以開(kāi)發(fā)一種工具,并由該工具執(zhí)行所述S101及S102的步 驟。具體的,所述工具需要做的就是在各級(jí)業(yè)務(wù)處理單元返回出錯(cuò)消息前,將 當(dāng)前業(yè)務(wù)處理單元的標(biāo)識(shí)按照調(diào)用順序附加在出錯(cuò)消息中,以便于客戶端根據(jù) 調(diào)用序列進(jìn)行^睹誤定位。其中,所述業(yè)務(wù)處理單元可以是一種函數(shù)或者是一個(gè)服務(wù),這種函數(shù)或服 務(wù)可以被其他的函數(shù)或服務(wù)調(diào)用,來(lái)完成一定的業(yè)務(wù)處理。相應(yīng)的,所述業(yè)務(wù) 處理單元的標(biāo)識(shí)可以是函數(shù)名或服務(wù)名。當(dāng)某業(yè)務(wù)處理單元A調(diào)用業(yè)務(wù)處理單 元B時(shí),業(yè)務(wù)處理單元B在完成相應(yīng)的業(yè)務(wù)處理后需要向業(yè)務(wù)處理單元A返回 響應(yīng)消息,具體的,如果成功完成業(yè)務(wù)處理,則返回成功消息,否則向業(yè)務(wù)處 理單元A返回業(yè)務(wù)處理出錯(cuò)消息。但是,現(xiàn)有技術(shù)中的業(yè)務(wù)處理出錯(cuò)消息僅包括錯(cuò)誤代碼,發(fā)送請(qǐng)求的客戶端最終僅能獲知業(yè)務(wù)處理出錯(cuò)了,以及錯(cuò)誤的類型,但是并不知道^"誤發(fā)出在 哪里,是在哪個(gè)調(diào)用過(guò)程中出現(xiàn)的錯(cuò)誤。為此,本發(fā)明實(shí)施例可以在業(yè)務(wù)處理 單元返回業(yè)務(wù)處理出^l昔消息時(shí),將所述業(yè)務(wù)處理單元的標(biāo)識(shí)附加到所述的業(yè)務(wù) 處理出^l晉消息中,這樣,首先可以標(biāo)識(shí)出哪個(gè)業(yè)務(wù)處理單元發(fā)生了4昔誤,并且 通過(guò)后續(xù)的處理,標(biāo)識(shí)出調(diào)用的序列,這樣就可以將函數(shù)調(diào)用序列才是供給客戶 端,便于客戶端確定出錯(cuò)的準(zhǔn)確位置。具體實(shí)現(xiàn)時(shí),可以采用記錄調(diào)用棧的方式記錄函數(shù)調(diào)用序列,比如A函數(shù)調(diào)B函數(shù),B函數(shù)再調(diào)用C函數(shù),則可以記錄為調(diào)用棧A->B->C。這樣,如果 函數(shù)C在執(zhí)行過(guò)程中出錯(cuò),在將調(diào)用棧(C)附加到出錯(cuò)消息中,并由函數(shù)C 返回給函數(shù)B;然后在函數(shù)B向函數(shù)A返回出錯(cuò)消息時(shí),在將調(diào)用棧(B->C) 附加到出錯(cuò)消息中;同樣,在函數(shù)A向客戶端返回出錯(cuò)消息前,將調(diào)用棧 (A->B->C)附加在出錯(cuò)消息中。這樣,客戶端就可以通過(guò)調(diào)用棧獲知函數(shù)的 調(diào)用序列。需要說(shuō)明的是,本發(fā)明實(shí)施例僅需要在返回業(yè)務(wù)處理出錯(cuò)消息時(shí),生成函 數(shù)調(diào)用序列,當(dāng)業(yè)務(wù)處理正常時(shí),不需要進(jìn)行附加標(biāo)識(shí)的步驟。而大多數(shù)情況 下,業(yè)務(wù)處理是正常的,因此,對(duì)于業(yè)務(wù)處理系統(tǒng)而言,從整體上減低了進(jìn)行 錯(cuò)誤定位所需的開(kāi)銷。出錯(cuò)的業(yè)務(wù)處理單元A將業(yè)務(wù)處理出錯(cuò)消息返回給調(diào)用該業(yè)務(wù)處理單元 的上層業(yè)務(wù)處理單元B,如果該上層業(yè)務(wù)處理單元B是被上層業(yè)務(wù)處理單元C 調(diào)用的,則業(yè)務(wù)處理單元B需要繼續(xù)將業(yè)務(wù)處理出錯(cuò)消息返回給其上層業(yè)務(wù)處 理單元C。在返回給上層業(yè)務(wù)處理單元C之前,同樣需要將業(yè)務(wù)處理單元B的 標(biāo)識(shí)附加在所述業(yè)務(wù)處理出錯(cuò)消息中。同樣,業(yè)務(wù)處理單元C在接收到業(yè)務(wù)處理出錯(cuò)消息后,如果該業(yè)務(wù)處理單 元C是被上層業(yè)務(wù)處理單元D調(diào)用的,則業(yè)務(wù)處理單元C需要繼續(xù)將業(yè)務(wù)處理 出錯(cuò)消息返回給其上層業(yè)務(wù)處理單元D。在返回給上層業(yè)務(wù)處理單元D之前, 同樣需要將業(yè)務(wù)處理單元C的標(biāo)識(shí)附加在所述業(yè)務(wù)處理出錯(cuò)消息中。以此類 推,知道將業(yè)務(wù)處理出錯(cuò)消息返回到請(qǐng)求發(fā)出者(如客戶端)。中的,因此,請(qǐng)求發(fā)出者就可以從收到的業(yè)務(wù)處理出錯(cuò)消息中,獲知出4普的業(yè) 務(wù)處理單元,以及整個(gè)調(diào)用過(guò)程中涉及到的各級(jí)業(yè)務(wù)處理單元之間的調(diào)用順 序,這樣便準(zhǔn)確地完成了錯(cuò)誤定位。在實(shí)際應(yīng)用中,可以在各級(jí)業(yè)務(wù)處理單元的應(yīng)答消息內(nèi)包含特定的出錯(cuò)信 息。這樣,出錯(cuò)信息就可以在整套系統(tǒng)的多個(gè)進(jìn)程之間傳遞,并且可以實(shí)現(xiàn)按 調(diào)用順序來(lái)存放出錯(cuò)信息。同時(shí),所述出錯(cuò)信息中包含出錯(cuò)業(yè)務(wù)處理單元的標(biāo)識(shí);在出錯(cuò)信息的傳遞過(guò)程中,每經(jīng)過(guò)一級(jí)業(yè)務(wù)處理單元,就將相應(yīng)級(jí)別業(yè)務(wù) 處理單元的標(biāo)識(shí)附加在出4晉信息中。也就是說(shuō),本發(fā)明實(shí)施例中,業(yè)務(wù)處理單元之間的調(diào)用接口中,可以包含 一個(gè)特定的出錯(cuò)信息返回參數(shù);這個(gè)出錯(cuò)信息返回參數(shù)包含出錯(cuò)的業(yè)務(wù)處理單 元及各級(jí)上層業(yè)務(wù)處理單元的標(biāo)識(shí)。因此對(duì)于本發(fā)明實(shí)施例而言,;夸進(jìn)程的遠(yuǎn) 程調(diào)用與進(jìn)程內(nèi)部子函數(shù)調(diào)用,在出錯(cuò)信息上完全一致。同時(shí),對(duì)于一次服務(wù) 過(guò)程,調(diào)用下層業(yè)務(wù)處理單元(調(diào)用業(yè)務(wù)處理函數(shù)或遠(yuǎn)程調(diào)用子服務(wù))出錯(cuò)而 返回出錯(cuò)信息時(shí),上層函數(shù)或子服務(wù)也會(huì)繼續(xù)向其上層函數(shù)或子服務(wù)返回出錯(cuò) 信息,并在返回時(shí)把當(dāng)前函數(shù)名(服務(wù)名)附加到底層返回的出錯(cuò)信息之后。 這樣在客戶端收到的應(yīng)答消息中的出錯(cuò)信息中,即包含了出錯(cuò)函數(shù)的整個(gè)調(diào)用 序列,便于分析定位出錯(cuò)原因。此外,由于一次服務(wù)過(guò)程中,有些業(yè)務(wù)處理單元可能是遠(yuǎn)程調(diào)用的,還有 些業(yè)務(wù)處理單元可能是上個(gè)函數(shù)的內(nèi)部子函數(shù),因此,本發(fā)明實(shí)施例在獲取到 包含有業(yè)務(wù)處理單元調(diào)用序列的業(yè)務(wù)處理出錯(cuò)消息后,還可以對(duì)所述業(yè)務(wù)處理 單元調(diào)用序列進(jìn)行分析,判斷出調(diào)用序列中涉及到的各業(yè)務(wù)處理單元中,哪些 是遠(yuǎn)程調(diào)用的,哪些是上個(gè)函數(shù)的內(nèi)部子函數(shù)。具體的判斷方法可以是被遠(yuǎn)程調(diào)用的業(yè)務(wù)處理單元作為一種對(duì)外公布的服務(wù)是需要統(tǒng)一注冊(cè)登 記管理,根據(jù)登記的信息即可識(shí)別出調(diào)用序列中哪些是遠(yuǎn)程調(diào)用的服務(wù)名,除 此之外的就是內(nèi)部函數(shù)名。并且,可以判定兩個(gè)服務(wù)名之間的函數(shù)名,即為前 一個(gè)服務(wù)所調(diào)用的內(nèi)部函數(shù),因?yàn)榧s定當(dāng)子服務(wù)返回出錯(cuò)時(shí),服務(wù)本身也視作 出錯(cuò)返回,不會(huì)繼續(xù)調(diào)用內(nèi)部函數(shù)或其他子服務(wù),從而使實(shí)現(xiàn)得到簡(jiǎn)化。為了更好地理解本發(fā)明實(shí)施例提供的技術(shù)方案,下面通過(guò)具體的應(yīng)用進(jìn)行詳細(xì)地描述。如圖2所示,其中funcl是一個(gè)對(duì)外的服務(wù),供客戶端調(diào)用(一般是遠(yuǎn)程 調(diào)用);func2是被funcl調(diào)用的函數(shù),也可以是被funcl遠(yuǎn)程調(diào)用的子服務(wù); 同理func3是被func2調(diào)用的函數(shù),也可以是被func2遠(yuǎn)程調(diào)用的子服務(wù)。一般來(lái)說(shuō)funcl的實(shí)現(xiàn)不僅包括圖2所示的調(diào)用過(guò)程,比如其在調(diào)用 func2前后還會(huì)調(diào)用其他函數(shù)或子服務(wù);同樣func3除了可能被func2調(diào)用之 后,也可能被其他函數(shù)或服務(wù)調(diào)用。所以當(dāng)func3處理出錯(cuò)時(shí),通過(guò)返回調(diào)用 序列,就能清楚知道func3是因?yàn)閒uncl調(diào)用func2,再由func2調(diào)用func3 這樣一種調(diào)用序列的情況下出的錯(cuò),這樣就更容易分析出錯(cuò)原因。具體的,可以包括以下步驟S201:請(qǐng)求功能funcl;客戶端調(diào)用funcl來(lái)實(shí)現(xiàn)業(yè)務(wù)處理;S202: funcl調(diào)用函數(shù)func2;即funcl在進(jìn)行業(yè)務(wù)處理過(guò)程中需要調(diào)用 函數(shù)func2;當(dāng)然,fimcl還可能需要調(diào)用其他函數(shù)或服務(wù),圖中未示出;S203: func2調(diào)用函數(shù)func3;即func2在進(jìn)行業(yè)務(wù)處理過(guò)程中需要調(diào)用 函數(shù)func3;當(dāng)然,func2還可能需要調(diào)用其他函數(shù)或服務(wù),同樣,func3還 可能被其他調(diào)用其他函數(shù)或服務(wù),圖中未示出;S204: func3在進(jìn)行業(yè)務(wù)處理的過(guò)程中出錯(cuò),則需要向func2返回出錯(cuò)消 息;此時(shí),在func3向func2返回出錯(cuò)消息之前,記錄異常調(diào)用棧(func3 ), 然后向func2返回出錯(cuò)消息;其中,所述異常調(diào)用棧(func3 )會(huì)附加在出錯(cuò) 消息上返回給func2;所述func3、 func2、 funci分別為各函數(shù)的函凄t名;S205: func2在接收到出錯(cuò)消息之后,需要向funcl返回出錯(cuò)消息;同樣, 在返回之前,記錄異常調(diào)用棧(func2-〉func3),然后向funcl返回出4昔消息; 其中,所述異常調(diào)用棧(func2-〉func3)會(huì)附加在出錯(cuò)消息上返回給funcl;S206:最后,funcl在接收到出錯(cuò)消息之后,需要向客戶端返回出錯(cuò)消息; 同樣,在返回之前,記錄異常調(diào)用棧(funcl-〉func2-〉func3),并將攜帶有該 異常調(diào)用棧(funcl-〉func2-〉func3)的出錯(cuò)消息返回給客戶端??蛻舳丝梢?依據(jù)異常調(diào)用棧找(funcl-〉func2-〉func3)出錯(cuò)誤發(fā)生的位置。1當(dāng)然客戶端收到這種出錯(cuò)信息之后,還可以利用本發(fā)明實(shí)施例所述的工具 分析業(yè)務(wù)處理出錯(cuò)消息中包含的函數(shù)調(diào)用序列哪些是遠(yuǎn)程調(diào)用的,哪些是上個(gè) 函數(shù)的內(nèi)部子函數(shù),從而能確定每部分函數(shù)是在哪個(gè)進(jìn)程上被處理的。與本發(fā)明實(shí)施例所提供的錯(cuò)誤定位方法相對(duì)應(yīng),本發(fā)明實(shí)施例還提供了 一種錯(cuò)誤定位輔助裝置,參見(jiàn)圖3,該裝置包括出錯(cuò)標(biāo)識(shí)附加模塊U301 ,用于當(dāng)業(yè)務(wù)處理單元返回業(yè)務(wù)處理出錯(cuò)消息時(shí), 將所述業(yè)務(wù)處理單元的標(biāo)識(shí)附加到所述的業(yè)務(wù)處理出錯(cuò)消息中;分級(jí)標(biāo)識(shí)附加模塊U302,用于當(dāng)調(diào)用所述業(yè)務(wù)處理單元的各級(jí)上層業(yè)務(wù) 處理單元接收到所述業(yè)務(wù)處理出錯(cuò)消息并需要上其上層調(diào)用返回時(shí),分別將所 述各級(jí)上層業(yè)務(wù)處理單元的標(biāo)識(shí)按照調(diào)用順序附加到所述業(yè)務(wù)處理出錯(cuò)消息 中,直到客戶端收到包含有業(yè)務(wù)處理單元調(diào)用序列的業(yè)務(wù)處理出錯(cuò)消息。具體的,可以通過(guò)生成調(diào)用棧的方式將各級(jí)業(yè)務(wù)處理單元的標(biāo)識(shí)附加在所 述業(yè)務(wù)處理出錯(cuò)消息中。其中,所述業(yè)務(wù)處理單元包括函數(shù)或服務(wù);相應(yīng)的,所述業(yè)務(wù)處理單元的 標(biāo)識(shí)包括函數(shù)名或服務(wù)名。實(shí)際應(yīng)用中,所述業(yè)務(wù)處理單元及調(diào)用所述業(yè)務(wù)處理單元的各級(jí)上層業(yè)務(wù) 處理單元,可以在同一進(jìn)程內(nèi)或者分布在多臺(tái)服務(wù)器的多個(gè)進(jìn)程上。由于一次服務(wù)過(guò)程中,有些業(yè)務(wù)處理單元可能是遠(yuǎn)程調(diào)用的,還有些業(yè)務(wù) 處理單元可能是上個(gè)函數(shù)的內(nèi)部子函數(shù),因此,本發(fā)明實(shí)施例在獲取到包含有 業(yè)務(wù)處理單元調(diào)用序列的業(yè)務(wù)處理出錯(cuò)消息后,還可以對(duì)所述業(yè)務(wù)處理單元調(diào) 用序列進(jìn)行分析,判斷出調(diào)用序列中涉及到的各業(yè)務(wù)處理單元中,哪些是遠(yuǎn)程 調(diào)用的,哪些是上個(gè)函數(shù)的內(nèi)部子函數(shù)。此時(shí),所述裝置還可以包括分析模塊,用于分析所述業(yè)務(wù)處理單元調(diào)用序列,分別標(biāo)識(shí)出遠(yuǎn)程調(diào)用的 業(yè)務(wù)處理單元,以及被上個(gè)函數(shù)作為內(nèi)部子函數(shù)調(diào)用的業(yè)務(wù)處理單元。以上對(duì)本發(fā)明所提供的 一種錯(cuò)誤定位輔助方法及裝置,進(jìn)行了詳細(xì)介紹,.明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般 技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處。 綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
權(quán)利要求
1、一種錯(cuò)誤定位輔助方法,其特征在于,包括當(dāng)業(yè)務(wù)處理單元返回業(yè)務(wù)處理出錯(cuò)消息時(shí),將所述業(yè)務(wù)處理單元的標(biāo)識(shí)附加到所述的業(yè)務(wù)處理出錯(cuò)消息中;當(dāng)調(diào)用所述業(yè)務(wù)處理單元的各級(jí)上層業(yè)務(wù)處理單元接收到所述業(yè)務(wù)處理出錯(cuò)消息并需要上其上層調(diào)用返回時(shí),分別將所述各級(jí)上層業(yè)務(wù)處理單元的標(biāo)識(shí)按照調(diào)用順序附加到所述業(yè)務(wù)處理出錯(cuò)消息中,直到請(qǐng)求發(fā)起端收到包含有業(yè)務(wù)處理單元調(diào)用序列的業(yè)務(wù)處理出錯(cuò)消息。
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括 所述請(qǐng)求發(fā)起端根據(jù)所述按照調(diào)用順序附加的各級(jí)業(yè)務(wù)處理單元的標(biāo)識(shí),進(jìn)行錯(cuò)誤定位。
3、 根據(jù)權(quán)利要求1所述的方法,其特征在于,通過(guò)生成調(diào)用棧的方式將 各級(jí)業(yè)務(wù)處理單元的標(biāo)識(shí)附加在所述業(yè)務(wù)處理出錯(cuò)消息中。
4、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述業(yè)務(wù)處理單元包括函 數(shù)或服務(wù);所述業(yè)務(wù)處理單元的標(biāo)識(shí)包括函數(shù)名或服務(wù)名。
5、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述業(yè)務(wù)處理單元及調(diào)用 所述業(yè)務(wù)處理單元的各級(jí)上層業(yè)務(wù)處理單元在同 一進(jìn)程內(nèi)或者分布在多臺(tái)服 務(wù)器的多個(gè)進(jìn)程上。
6、 根據(jù)權(quán)利要求4所述的方法,其特征在于,還包括 分析所述業(yè)務(wù)處理單元調(diào)用序列,分別標(biāo)識(shí)出遠(yuǎn)程調(diào)用的業(yè)務(wù)處理單元,以及被上個(gè)函數(shù)作為內(nèi)部子函數(shù)調(diào)用的業(yè)務(wù)處理單元。
7、 一種錯(cuò)誤定位輔助裝置,其特征在于,包括出錯(cuò)標(biāo)識(shí)附加模塊,用于當(dāng)業(yè)務(wù)處理單元返回業(yè)務(wù)處理出錯(cuò)消息時(shí),將所 述業(yè)務(wù)處理單元的標(biāo)識(shí)附加到所述的業(yè)務(wù)處理出錯(cuò)消息中;分級(jí)標(biāo)識(shí)附加模塊,用于當(dāng)調(diào)用所述業(yè)務(wù)處理單元的各級(jí)上層業(yè)務(wù)處理單 元接收到所述業(yè)務(wù)處理出錯(cuò)消息并需要上其上層調(diào)用返回時(shí),分別將所述各級(jí) 上層業(yè)務(wù)處理單元的標(biāo)識(shí)按照調(diào)用順序附加到所述業(yè)務(wù)處理出錯(cuò)消息中,直到 客戶端收到包含有業(yè)務(wù)處理單元調(diào)用序列的業(yè)務(wù)處理出錯(cuò)消息。
8、 才艮據(jù)權(quán)利要求7所述的裝置,其特征在于,通過(guò)生成調(diào)用棧的方式將各級(jí)業(yè)務(wù)處理單元的標(biāo)識(shí)附加在所述業(yè)務(wù)處理出錯(cuò)消息中。
9、 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述業(yè)務(wù)處理單元包括函 數(shù)或服務(wù);所述業(yè)務(wù)處理單元的標(biāo)識(shí)包括函數(shù)名或服務(wù)名。
10、 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述業(yè)務(wù)處理單元及調(diào)用 所述業(yè)務(wù)處理單元的各級(jí)上層業(yè)務(wù)處理單元在同一進(jìn)程內(nèi)或者分布在多臺(tái)服 務(wù)器的多個(gè)進(jìn)程上。
11、 根據(jù)權(quán)利要求IO所述的裝置,其特征在于,還包括分析模塊,用于分析所述業(yè)務(wù)處理單元調(diào)用序列,分別標(biāo)識(shí)出遠(yuǎn)程調(diào)用的 業(yè)務(wù)處理單元,以及被上個(gè)函數(shù)作為內(nèi)部子函數(shù)調(diào)用的業(yè)務(wù)處理單元。
全文摘要
本發(fā)明公開(kāi)了一種錯(cuò)誤定位輔助方法,該方法包括當(dāng)業(yè)務(wù)處理單元返回業(yè)務(wù)處理出錯(cuò)消息時(shí),將所述業(yè)務(wù)處理單元的標(biāo)識(shí)附加到所述的業(yè)務(wù)處理出錯(cuò)消息中;當(dāng)調(diào)用所述業(yè)務(wù)處理單元的各級(jí)上層業(yè)務(wù)處理單元接收到所述業(yè)務(wù)處理出錯(cuò)消息并需要上其上層調(diào)用返回時(shí),分別將所述各級(jí)上層業(yè)務(wù)處理單元的標(biāo)識(shí)按照調(diào)用順序附加到所述業(yè)務(wù)處理出錯(cuò)消息中,直到客戶端收到所述業(yè)務(wù)處理出錯(cuò)消息。因此,本發(fā)明只在出錯(cuò)時(shí)才反向生成調(diào)用序列,降低了錯(cuò)誤定位所需的維護(hù)開(kāi)銷。
文檔編號(hào)G06F11/36GK101620567SQ20091016522
公開(kāi)日2010年1月6日 申請(qǐng)日期2009年8月13日 優(yōu)先權(quán)日2009年8月13日
發(fā)明者周偉明, 章樂(lè)焱 申請(qǐng)人:恒生電子股份有限公司