專利名稱:遠(yuǎn)程記錄機(jī)制的制作方法
技術(shù)領(lǐng)域:
至少一個(gè)實(shí)施例涉及計(jì)算機(jī)系統(tǒng),并且更具體地涉及遠(yuǎn)程記錄在計(jì)算機(jī)系統(tǒng)上執(zhí)行的計(jì)算機(jī)代碼的調(diào)試信息。
背景技術(shù):
隨著計(jì)算機(jī)代碼變得更復(fù)雜,包括驅(qū)動(dòng)器和程序代碼的代碼調(diào)試變得更難以實(shí)現(xiàn)。在遠(yuǎn)程計(jì)算的情形中,因?yàn)楸匾畔⒉⒎强偸前l(fā)送至遠(yuǎn)程編程員以幫助調(diào)試過程時(shí),調(diào)試代碼變得甚至更難。目前,利用串行端口將調(diào)試信息或者發(fā)送至執(zhí)行代碼的計(jì)算機(jī)的顯示器或者傳輸至文件。通過利用程序代碼中的打印函數(shù)來實(shí)現(xiàn)通過發(fā)送信息至屏幕的調(diào)試。在代碼執(zhí)行期間發(fā)生程序錯(cuò)誤時(shí),此打印函數(shù)運(yùn)行調(diào)試子函數(shù)。在此調(diào)試過程期間停止代碼的執(zhí)行。使用打印庫,調(diào)試過程可在兩個(gè)方向的其中一個(gè)上進(jìn)行。它可使用打印庫和控制臺(tái)庫并且利用串行端口驅(qū)動(dòng)器生成文件。串行端口,即UART (通用異步收發(fā)器)裝置被限制為大約每秒115200比特的速度。此速度比正在調(diào)試的程序的速度慢得多并且由于此延遲可能會(huì)導(dǎo)致甚至更多的錯(cuò)誤發(fā)生。一旦將數(shù)據(jù)寫入本地文件,就重新開始程序代碼的執(zhí)行。打印庫還可使用圖形加速器(GA)庫。GA庫控制顯示適配器驅(qū)動(dòng)器。利用此驅(qū)動(dòng)器將調(diào)試信息發(fā)送至顯示器。然而,通常顯示器太小而不能容納所有必要信息并且顯示器可能難以讀取。一旦將數(shù)據(jù)寫入顯示器,就重新開始程序代碼的執(zhí)行。另外,這些打印函數(shù)使用大量的系統(tǒng)時(shí)間和資源,這可能會(huì)延遲后面代碼的執(zhí)行。 尤其是如果程序在實(shí)時(shí)環(huán)境中運(yùn)行的話,此延遲可能實(shí)際上隱藏代碼中后面的問題。
圖1是示出依照本發(fā)明實(shí)施例的計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例的示意圖。圖2是示出依照本發(fā)明實(shí)施例實(shí)施的邏輯和操作的進(jìn)一步細(xì)節(jié)的流程圖。圖3是調(diào)試信息節(jié)點(diǎn)的實(shí)施例的示意圖。圖4是示出依照本發(fā)明實(shí)施例實(shí)施的邏輯和操作的進(jìn)一步細(xì)節(jié)的流程圖。圖5是示出用于實(shí)現(xiàn)本發(fā)明實(shí)施例的計(jì)算機(jī)系統(tǒng)的實(shí)施例的圖示。
具體實(shí)施例方式下面描述了用于計(jì)算機(jī)系統(tǒng)固件的可管理性擴(kuò)展機(jī)制的方法和系統(tǒng)。在下面的描述中,陳述了許多特定的細(xì)節(jié),例如涉及可擴(kuò)展固件接口(EFI)框架規(guī)范的實(shí)施例,以便提供對(duì)本發(fā)明的透徹理解。對(duì)本領(lǐng)域的技術(shù)人員來說將顯而易見的是,沒有這些特定的細(xì)節(jié)也可以實(shí)現(xiàn)本發(fā)明。在其他情形中,未詳細(xì)描述公知的設(shè)計(jì)和實(shí)現(xiàn)以便使描述更簡(jiǎn)潔。圖1示出依照本發(fā)明實(shí)施例的計(jì)算機(jī)系統(tǒng)100。計(jì)算機(jī)系統(tǒng)100包括處理器102、 存儲(chǔ)器104、耦合至總線108的固件存儲(chǔ)器110和網(wǎng)絡(luò)適配器112。示范的計(jì)算機(jī)系統(tǒng)100 可包括但不限于個(gè)人計(jì)算機(jī)、網(wǎng)絡(luò)工作站、便攜式計(jì)算機(jī)、手持式或掌上型計(jì)算機(jī)、個(gè)人數(shù)字助理(PDA)、無線通信裝置、電視游戲系統(tǒng)和數(shù)字照相機(jī)。固件存儲(chǔ)器110是非易失性存儲(chǔ)裝置,其包括但不限于閃存裝置、可擦可編程只讀存儲(chǔ)器(EPROM)和電子可擦可編程只讀存儲(chǔ)器(EEPROM)。固件存儲(chǔ)器110至少存儲(chǔ)包括可由計(jì)算機(jī)系統(tǒng)100執(zhí)行的指令和/或數(shù)據(jù)的固件圖像。在一個(gè)實(shí)施例中,固件圖像包括用于個(gè)人計(jì)算機(jī)的BIOS固件。在另一個(gè)實(shí)施例中,固件圖像包括在安裝在個(gè)人計(jì)算機(jī)上的擴(kuò)展板的固件存儲(chǔ)裝置中存儲(chǔ)的固件。在又一個(gè)實(shí)施例中,固件圖像是在無線電話、PDA或數(shù)字照相機(jī)的固件存儲(chǔ)裝置中存儲(chǔ)的固件。在一個(gè)實(shí)施例中,固件存儲(chǔ)器110包括依照EFI框架規(guī)范的指令和/或數(shù)據(jù)。當(dāng)今的固件體系結(jié)構(gòu)包括用于除存儲(chǔ)在平臺(tái)的BIOS裝置(例如閃存)中的BIOS代碼所提供的之外擴(kuò)展BIOS功能性的規(guī)定。更具體地,可擴(kuò)展固件接口允許從各種不同資源來加載以固件模塊和驅(qū)動(dòng)器形式的固件,各種不同資源包括主要和次要閃速裝置、選項(xiàng)R0M(只讀存儲(chǔ)器)、各種持久性存儲(chǔ)裝置(例如硬盤、CD ROM(光盤只讀存儲(chǔ)器)等),以及甚至通過計(jì)算機(jī)網(wǎng)絡(luò)來加載。在EFI框架的一個(gè)實(shí)現(xiàn)中,初始化過程包括存儲(chǔ)在計(jì)算機(jī)系統(tǒng)100上的固件的各種執(zhí)行階段。這些執(zhí)行階段包括預(yù)EFI初始化(PEI)階段、驅(qū)動(dòng)器執(zhí)行環(huán)境(DXE) 階段和EFI 1.0執(zhí)行階段。這些階段使得各種平臺(tái)裝置和服務(wù)的初始化以及設(shè)置成為可能,并且允許依照在EFI 1. 0執(zhí)行階段之后的OS運(yùn)行階段來引導(dǎo)操作系統(tǒng)。在一個(gè)實(shí)施例中,固件存儲(chǔ)器110是閃存裝置。本領(lǐng)域的技術(shù)人員將會(huì)理解,可使用用于維持固件代碼和/或數(shù)據(jù)的其他類型的持久性存儲(chǔ)裝置并且本文所討論的使用閃速裝置的實(shí)施例僅僅是示范性的。閃存是允許制造商和(利用適當(dāng)硬件/軟件)的最終用戶電擦除并重新編程信息的非易失性存儲(chǔ)技術(shù)。閃存通常以被稱為塊的存儲(chǔ)單位進(jìn)行擦除而不是以位的級(jí)別進(jìn)行擦除,其中當(dāng)塊被擦除時(shí)給定塊中的所有位被轉(zhuǎn)換到預(yù)定極性(即,邏輯電平)。在一個(gè)實(shí)施例中,塊大小是64k。在另一個(gè)實(shí)施例中,塊大小是32k。在一種常用類型的閃存、例如由 Intel公司制造的閃存裝置中,通過將存儲(chǔ)塊中的所有位設(shè)為1而電子擦除存儲(chǔ)塊。接著可通過將單獨(dú)的位翻轉(zhuǎn)為0以形成與數(shù)據(jù)相對(duì)應(yīng)的適當(dāng)?shù)奈荒J蕉鴮?shù)據(jù)寫入塊。在其他類型的閃速裝置中,被擦除的邏輯狀態(tài)為全0,并且將數(shù)據(jù)寫入這些裝置包括將單獨(dú)的位變?yōu)?1。注意到,在常規(guī)的閃速裝置中,單獨(dú)的位無法從改變的(即設(shè)定的)邏輯電平翻轉(zhuǎn)回到被擦除的邏輯電平;為了更新塊中的數(shù)據(jù),所有位必須首先被擦除,而后被重寫。依照一個(gè)實(shí)施例,存儲(chǔ)裝置106耦合至總線108。示范的存儲(chǔ)裝置包括但不限于磁驅(qū)動(dòng)器、光驅(qū)動(dòng)器或諸如此類。在備選實(shí)施例中,存儲(chǔ)器106不是計(jì)算機(jī)系統(tǒng)100的一部分,但是可由計(jì)算機(jī)系統(tǒng)100進(jìn)行訪問。網(wǎng)絡(luò)適配器112耦合至總線108。網(wǎng)絡(luò)適配器或網(wǎng)絡(luò)接口卡(NIC)在計(jì)算機(jī)系統(tǒng) 100和網(wǎng)絡(luò)之間形成連接。有線NIC通常使用以太網(wǎng)連接并且可用于10、100和lOOOBase-T 配置。100-Base-T卡可以100Mbps的速率傳送數(shù)據(jù)。有線NIC可使用ISA、PCI、PCMCIA或 PCI Xpress總線。無線NIC還允許利用例如IEEE 802. 11族和藍(lán)牙(IEEE 802. 15)的無線規(guī)范連接到網(wǎng)絡(luò)。在一個(gè)實(shí)施例中,網(wǎng)絡(luò)適配器112支持EFI框架。在一個(gè)實(shí)施例中,如果存在有多個(gè)網(wǎng)絡(luò)適配器112,則用戶可確定使用任何網(wǎng)絡(luò)適配器。然而,要求用戶首先要配置運(yùn)行環(huán)境。例如,可使用工具包。示范的配置指令可采用 netdebugcfg-s "ethO 514192. 168. 0. 1 514”的形式。參數(shù)“_s”指使用本文所描述的遠(yuǎn)程記錄。參數(shù)“ethO”指選擇名為ethO的網(wǎng)絡(luò)適配器作為通信裝置。第一個(gè)“514”表示本機(jī)端口等于“514”。本領(lǐng)域的技術(shù)人員將會(huì)注意到,端口通常與UDP相關(guān)聯(lián)。參數(shù)“192. 168. 0. 1” 表示在其上程序正在運(yùn)行的機(jī)器的IP地址,并且最后的參數(shù)“514”表示遠(yuǎn)程端口。傳統(tǒng)上,BIOS不提供連網(wǎng)功能性。在一個(gè)實(shí)施例中,BIOS被重新構(gòu)建以提供該功能性。在另一個(gè)實(shí)施例中,除了 BIOS外還使用EFI框架。EFI框架的一個(gè)實(shí)施例具有并入 FreeBSD TCP/IPv4協(xié)議棧的端口的、與BSD(伯克利軟件分發(fā)版)套接字兼容的接口,其又利用EFI簡(jiǎn)單網(wǎng)絡(luò)接口(SNI)協(xié)議。EFI套接字協(xié)議接口提供EFI應(yīng)用工具包的核心組件的其中之一。套接字接口與網(wǎng)絡(luò)傳輸無關(guān)。盡管最常用的實(shí)現(xiàn)連接到TCP/IPv4網(wǎng)絡(luò)棧,但是它同樣可用于TCP/IPv6、IPX、NetBEUI或Appletalk網(wǎng)絡(luò)棧。套接字接口還是應(yīng)用程序的事實(shí)上的標(biāo)準(zhǔn)連網(wǎng)接口。從EFI的觀點(diǎn)看,該體系結(jié)構(gòu)的最重要方面是由TCP/IPv4棧實(shí)現(xiàn)的套接字協(xié)議接口規(guī)范。通過實(shí)現(xiàn)EFI套接字協(xié)議接口,新的和/或不同的網(wǎng)絡(luò)棧實(shí)現(xiàn)可以在平臺(tái)上運(yùn)行而無需重新編譯使用它們的應(yīng)用程序。參考TCP/IPv4網(wǎng)絡(luò)棧是FreeBSD 實(shí)現(xiàn)的端口。這包括IPv4、TCP、UDP、ARP和ICMP的實(shí)現(xiàn)。該棧還包括對(duì)因特網(wǎng)組管理協(xié)議(IGMP)和資源預(yù)留協(xié)議(RSVP)的支持。該棧實(shí)現(xiàn)為可供應(yīng)用程序和一個(gè)或多個(gè)EFI協(xié)議同時(shí)使用的EFI協(xié)議。對(duì)網(wǎng)絡(luò)棧的訪問是通過EFI套接字協(xié)議接口進(jìn)行的。協(xié)議接口的完整描述可以在第3部分中找到。如同F(xiàn)reeBSD系統(tǒng)一樣,所有的網(wǎng)絡(luò)棧配置可以在運(yùn)行時(shí)實(shí)施。示出依照本發(fā)明實(shí)施例實(shí)施的邏輯和操作的進(jìn)一步細(xì)節(jié)的流程圖200在圖2中示出。計(jì)算機(jī)系統(tǒng)運(yùn)行包括調(diào)試打印函數(shù)的程序或代碼片段202,該調(diào)試打印函數(shù)在該代碼片段執(zhí)行期間發(fā)生程序錯(cuò)誤時(shí)運(yùn)行調(diào)試子函數(shù)。出于說明的目的,此計(jì)算機(jī)系統(tǒng)將被稱為 “客戶機(jī)”。在發(fā)生錯(cuò)誤之后使客戶機(jī)上代碼片段202的正常執(zhí)行停止并且調(diào)用調(diào)試函數(shù)。 可由執(zhí)行代碼202訪問的網(wǎng)絡(luò)打印驅(qū)動(dòng)器(Netfrint) 204用于傳送來自代碼202的調(diào)試信息。在一個(gè)實(shí)施例中,可以重新編譯已有的程序代碼以利用新的調(diào)試函數(shù)。網(wǎng)絡(luò)打印驅(qū)動(dòng)器204接收調(diào)試信息并且代碼片段202的執(zhí)行立即重新開始。網(wǎng)絡(luò)適配器可由它的網(wǎng)絡(luò)適配器驅(qū)動(dòng)器206訪問。網(wǎng)絡(luò)打印驅(qū)動(dòng)器204將調(diào)試信息傳輸至網(wǎng)絡(luò)適配器驅(qū)動(dòng)器206,其又利用網(wǎng)絡(luò)適配器將數(shù)據(jù)傳輸至遠(yuǎn)程主機(jī)用于存儲(chǔ)或記錄。出于說明的目的,遠(yuǎn)程主機(jī)被稱為“服務(wù)器”。術(shù)語“服務(wù)器”包括能夠接收此數(shù)據(jù)的計(jì)算機(jī)系統(tǒng)。這種數(shù)據(jù)的傳輸和存儲(chǔ)提供了在服務(wù)器處遠(yuǎn)程調(diào)試和跟蹤執(zhí)行代碼的能力。 在實(shí)施例中,執(zhí)行程序的運(yùn)行狀態(tài)還可以通過客戶機(jī)的網(wǎng)絡(luò)適配器進(jìn)行遠(yuǎn)程訪問。因?yàn)樗姓{(diào)試信息直接通過網(wǎng)絡(luò)適配器傳輸,而不是通過通常使用的、例如串行端口的其他裝置傳輸,客戶機(jī)的運(yùn)行時(shí)間幾乎未花費(fèi)在傳輸調(diào)試信息上。例如,100M NIC可用70微秒發(fā)送1KB的數(shù)據(jù)包,而串行端口會(huì)用70毫秒傳輸該大小相同的包。傳送操作所需要的資源是網(wǎng)絡(luò)適配器。因此,傳統(tǒng)上用于調(diào)試的、例如打印庫的其他庫是不必要的。在實(shí)施例中,服務(wù)器具有設(shè)計(jì)用來監(jiān)控網(wǎng)絡(luò)流量的程序。該程序在被執(zhí)行時(shí)收集并記錄自客戶機(jī)傳輸?shù)恼{(diào)試信息。該調(diào)試信息接著可由服務(wù)器進(jìn)行訪問。在一個(gè)實(shí)施例中, 服務(wù)器程序使用不同顏色或字體來顯示自客戶機(jī)接收的消息。圖3示出自客戶機(jī)傳輸至服務(wù)器的調(diào)試信息節(jié)點(diǎn)300的實(shí)施例。優(yōu)先級(jí)(PRI)302 分量表示消息的優(yōu)先級(jí)。調(diào)試信息還可包括與計(jì)算機(jī)代碼執(zhí)行過程中發(fā)生錯(cuò)誤時(shí)的時(shí)間和 /或日期相對(duì)應(yīng)的時(shí)間戳304。主機(jī)(客戶機(jī))ID 306還可包括在調(diào)試信息節(jié)點(diǎn)300中。主機(jī)ID 306唯一識(shí)別網(wǎng)絡(luò)上的、將調(diào)試信息傳輸至服務(wù)器的特殊客戶機(jī)。這在高度連網(wǎng)的情況中尤其有利,例如網(wǎng)吧,在這里可能以其他的方式難以確定哪個(gè)客戶機(jī)正有關(guān)于執(zhí)行代碼的問題。調(diào)試信息節(jié)點(diǎn)300的一個(gè)實(shí)施例包括元數(shù)據(jù)308。元數(shù)據(jù)描述了此調(diào)試信息的程序上下文信息,它對(duì)試圖定位程序代碼中的錯(cuò)誤的開發(fā)者有幫助。元數(shù)據(jù)308可包括但不限于代碼的模塊名314和子模塊名316、用戶可定義的優(yōu)先級(jí)318、代碼的文件名320和代碼的行號(hào)322。計(jì)算機(jī)代碼可以分為若干模塊或部分。另外,每個(gè)模塊可以進(jìn)一步細(xì)分為子模塊。模塊名314和子模塊名316表示未正確執(zhí)行的特殊模塊或子模塊。調(diào)試信息節(jié)點(diǎn)300還包括調(diào)試信息312。調(diào)試信息312可包含描述變量的當(dāng)前值或系統(tǒng)狀態(tài)的若干字符。這對(duì)于程序開發(fā)者跟蹤和調(diào)試源于代碼的問題是有用的。開發(fā)者可按照他/她的需求來定義調(diào)試信息內(nèi)容的細(xì)節(jié)。調(diào)試信息節(jié)點(diǎn)300的長(zhǎng)度是受限的。調(diào)試信息節(jié)點(diǎn)300的最大長(zhǎng)度是傳送調(diào)試信息節(jié)點(diǎn)300所通過的當(dāng)前網(wǎng)絡(luò)接口的最大傳輸單元(MTU)的大小。在一個(gè)實(shí)施例中,調(diào)試信息節(jié)點(diǎn)300包括分隔符310。分隔符310包括項(xiàng)目名3M 和序號(hào)326。通過使用序號(hào)3 來發(fā)現(xiàn)由于未知原因而在傳輸中丟失的項(xiàng)。當(dāng)準(zhǔn)備傳輸信息節(jié)點(diǎn)300時(shí),可為序號(hào)3 賦值。在一個(gè)實(shí)施例中,對(duì)于后面的節(jié)點(diǎn),序號(hào)值增加1。對(duì)于所有節(jié)點(diǎn)300,序號(hào)應(yīng)當(dāng)是唯一的。一般,節(jié)點(diǎn)300還是連續(xù)的。程序開發(fā)者可通過檢查接收的每個(gè)節(jié)點(diǎn)的序號(hào)3 來確定調(diào)試信息的哪一項(xiàng)丟失了。示出依照本發(fā)明實(shí)施例實(shí)施的邏輯和操作的進(jìn)一步細(xì)節(jié)的流程圖在圖4中示出。 在網(wǎng)絡(luò)打印驅(qū)動(dòng)器400的一個(gè)實(shí)施例中,過濾器和節(jié)點(diǎn)構(gòu)建器402提供了按照存儲(chǔ)在配置模塊404中的配置參數(shù)過濾輸入的調(diào)試信息的能力。過濾器和節(jié)點(diǎn)構(gòu)建器402還可利用來自配置模塊404的參數(shù)來構(gòu)造調(diào)試信息節(jié)點(diǎn)。在一個(gè)實(shí)施例中,調(diào)試信息節(jié)點(diǎn)是適于傳輸?shù)陌?。在另一個(gè)實(shí)施例中,調(diào)試信息節(jié)點(diǎn)必須分解成包。配置模塊404提供了能夠從用戶接收用于配置過濾器和節(jié)點(diǎn)構(gòu)建器402的指令的用戶接口??膳渲玫囊匕ǖ幌抻谀K名、子模塊名、用戶定義的優(yōu)先級(jí)、文件名、行號(hào)、項(xiàng)目名和序號(hào)。過濾器和節(jié)點(diǎn)構(gòu)建器402使用配置模塊404的參數(shù)以幫助過濾輸入的調(diào)試信息。 例如,對(duì)于輸入過濾器和節(jié)點(diǎn)構(gòu)建器402的給定的調(diào)試信息,將調(diào)試信息的模塊名、子模塊名和用戶定義的優(yōu)先級(jí)與配置模塊404中為這些要素設(shè)置的值進(jìn)行比較。如果這些值匹配,則調(diào)試信息被過濾器和節(jié)點(diǎn)構(gòu)建器402接受。如果這些值不匹配,則過濾器和節(jié)點(diǎn)構(gòu)建器402不會(huì)認(rèn)為調(diào)試信息有效。在一個(gè)實(shí)施例中,調(diào)度器406將由過濾器和節(jié)點(diǎn)構(gòu)建器402創(chuàng)建的節(jié)點(diǎn)傳輸至網(wǎng)絡(luò)適配器驅(qū)動(dòng)器408。如果節(jié)點(diǎn)未能傳輸,則將其保存在緩沖隊(duì)列410中。節(jié)點(diǎn)未能傳輸?shù)脑虬ǖ幌抻诰W(wǎng)絡(luò)適配器驅(qū)動(dòng)器或者網(wǎng)絡(luò)適配器未正確起作用、網(wǎng)絡(luò)適配器缺失、網(wǎng)絡(luò)上供網(wǎng)絡(luò)適配器操作的流量太多、服務(wù)器或客戶機(jī)斷電以及網(wǎng)絡(luò)故障。在另一個(gè)實(shí)施例中,沒有緩沖隊(duì)列410并且只是忽略失敗的節(jié)點(diǎn)傳送。在一個(gè)實(shí)施例中,緩沖隊(duì)列410被存儲(chǔ)在非易失性存儲(chǔ)器中。即使客戶機(jī)斷電,也可保留存儲(chǔ)在非易失性存儲(chǔ)器的緩沖隊(duì)列410中的節(jié)點(diǎn)。這允許調(diào)度器406在恢復(fù)為客戶機(jī)供電之后嘗試重新傳輸節(jié)點(diǎn)而不丟失在客戶機(jī)運(yùn)行時(shí)所收集的調(diào)試信息。在另一個(gè)實(shí)施例中,將緩沖隊(duì)列410存儲(chǔ)在易失性存儲(chǔ)器中。可在稍后時(shí)間由調(diào)度器406重新傳輸存儲(chǔ)在緩沖隊(duì)列410中的節(jié)點(diǎn)。例如,當(dāng)網(wǎng)絡(luò)未被流量擁塞時(shí),調(diào)度器收集存儲(chǔ)在緩沖隊(duì)列410中的節(jié)點(diǎn)并且嘗試重新傳輸該節(jié)點(diǎn)。在一個(gè)實(shí)施例中,在客戶機(jī)上執(zhí)行的程序代碼包括用于創(chuàng)建調(diào)試信息節(jié)點(diǎn)的指令。在此實(shí)施例中,配置模塊以及過濾器和節(jié)點(diǎn)構(gòu)建器被包括在內(nèi)。程序代碼創(chuàng)建調(diào)試信息節(jié)點(diǎn)并且將該節(jié)點(diǎn)發(fā)送至調(diào)度器406。在一個(gè)實(shí)施例中,用于將調(diào)試信息包從客戶機(jī)傳輸至服務(wù)器的通信協(xié)議是公共網(wǎng)絡(luò)協(xié)議,其包括但不限于UDP和TCP/IP的TCP。所用協(xié)議應(yīng)當(dāng)確保自客戶機(jī)發(fā)送的信息到達(dá)服務(wù)器。如果協(xié)議可通過不同的子網(wǎng)絡(luò)或因特網(wǎng),則可將客戶機(jī)和服務(wù)器放置成彼此遠(yuǎn)
1 O在一個(gè)實(shí)施例中,調(diào)試信息包的格式是SYSLOG協(xié)議,該協(xié)議基于UDP協(xié)議。SYSLOG 協(xié)議在許多場(chǎng)合通常用作網(wǎng)絡(luò)管理格式種類。在此實(shí)施例中,SYSLOG用作通信協(xié)議,這是因?yàn)樵谟脩舳耍嬖谟锌捎糜诮邮詹⑹境龈?調(diào)試信息的詳細(xì)內(nèi)容的客戶工具。然而,傳統(tǒng)SYSLOG未提供可由調(diào)試信息節(jié)點(diǎn)提供的所有信息。傳統(tǒng)上,SYSLOG位于UDP層的頂部, 而在此實(shí)施例中,只需要網(wǎng)絡(luò)適配器的驅(qū)動(dòng)器。圖5示出了用于實(shí)施本文所描述的本發(fā)明實(shí)施例的示范的計(jì)算機(jī)系統(tǒng)500的實(shí)施例。計(jì)算機(jī)系統(tǒng)500通常示為各種類型的計(jì)算機(jī)裝置,包括個(gè)人計(jì)算機(jī)、膝上型計(jì)算機(jī)、工作站、服務(wù)器等;為簡(jiǎn)便起見,本文只討論計(jì)算機(jī)系統(tǒng)的基本組件。計(jì)算機(jī)系統(tǒng)500包括處理器機(jī)架502,其中容納了各種硬件組件,包括軟盤驅(qū)動(dòng)器504、硬盤506、電源(圖中未示出)和母板508,母板508填充有包括耦合至一個(gè)或多個(gè)處理器512的系統(tǒng)存儲(chǔ)器510的適當(dāng)?shù)募呻娐贰4鎯?chǔ)器510可包括但不限于動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(SDRAM)、內(nèi)存總線式動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(RDRAM) 或諸如此類。處理器51 2可以是常規(guī)的微處理器,其包括但不限于htel公司的X86、 Pentium、XScale或Itanium系列的微處理器、Motorola系列的微處理器、IBM的PowerPC 微處理器或諸如此類。硬盤506可包括單個(gè)單元或多個(gè)單元,并且可以可選地駐留在計(jì)算機(jī)系統(tǒng)500的外部。該系統(tǒng)還包括引導(dǎo)固件裝置,在該裝置上存有固件,它可通常包括例如 ROM裝置520或閃速裝置522的非易失性存儲(chǔ)器。母板同樣可包括其他固件裝置(圖中未示出)。一般地,系統(tǒng)的處理器將包括32或64位體系結(jié)構(gòu),并且系統(tǒng)存儲(chǔ)器將包括適于處理器的物理尋址方案,并且可通過相應(yīng)的連接到處理器和存儲(chǔ)器的地址和數(shù)據(jù)總線對(duì)其進(jìn)行訪問。用于顯示由計(jì)算機(jī)系統(tǒng)500運(yùn)行的固件、軟件程序和程序模塊所生成的圖形和文本的監(jiān)視器514被包括在內(nèi),所述圖形和文本例如為系統(tǒng)引導(dǎo)期間呈現(xiàn)的系統(tǒng)信息。鼠標(biāo) 516(或其他指示裝置)可以連接到串行端口、USB端口或以通信方式耦合至CPU 512的其他類似的總線端口。鍵盤518以和鼠標(biāo)516類似的方式、通過通信的方式耦合至母板508, 用于用戶輸入文本和命令。在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)500還包括網(wǎng)絡(luò)接口卡NIC或內(nèi)置NIC接口(圖中未示出),用于將計(jì)算機(jī)系統(tǒng)500連接到例如局域網(wǎng)(LAN)、廣域網(wǎng)(WAN) 或因特網(wǎng)的計(jì)算機(jī)網(wǎng)絡(luò)530。所示出的實(shí)施例還包括耦合至母板508的擴(kuò)展槽的可選的附加卡524。在一個(gè)實(shí)施例中,附加卡5M包括其上存有固件的選項(xiàng)R0M526。計(jì)算機(jī)系統(tǒng)500還可以可選地包括光盤只讀存儲(chǔ)器(“⑶-ROM”)驅(qū)動(dòng)器528,可將⑶-ROM盤插入光盤只讀存儲(chǔ)器驅(qū)動(dòng)器528 中,使得可以讀取盤上的例如操作系統(tǒng)的可執(zhí)行文件和數(shù)據(jù)或者將其移進(jìn)系統(tǒng)MM 510和 /或硬盤506中。其他大容量存儲(chǔ)裝置可以包括在計(jì)算機(jī)系統(tǒng)500中。在另一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)500是可與本發(fā)明一起使用的手持式或掌上型計(jì)算機(jī),其有時(shí)被稱為個(gè)人數(shù)字助理(PDA)。手持式計(jì)算機(jī)可能不包括硬盤或其他大容量存儲(chǔ)器,并且將可執(zhí)行程序從有繩或無線網(wǎng)絡(luò)連接裝入存儲(chǔ)器510以由處理器512來執(zhí)行。典型的計(jì)算機(jī)系統(tǒng)500將通常至少包括處理器515、存儲(chǔ)器510和將存儲(chǔ)器510耦合至處理器 512的總線(圖中未示出)。將會(huì)意識(shí)到,在一個(gè)實(shí)施例中,由包括例如盤操作系統(tǒng)的文件管理系統(tǒng)的操作系統(tǒng)軟件來控制計(jì)算機(jī)系統(tǒng)500,所述文件管理系統(tǒng)是操作系統(tǒng)軟件的一部分。例如,本發(fā)明的一個(gè)實(shí)施例利用Microsoft Windows作為計(jì)算機(jī)系統(tǒng)500的操作系統(tǒng)。在另一個(gè)實(shí)施例中,依照本發(fā)明的教導(dǎo)還可使用例如但不限于Apple Macintosh操作系統(tǒng)、Linux操作系統(tǒng)、Microsoft Windows CE操作系統(tǒng)、Unix操作系統(tǒng)、3Com I^alm操作系統(tǒng)或諸如此類的其他操作系統(tǒng)。因此,本發(fā)明的實(shí)施例可用作或支持在某一形式的處理核(例如處理器512)上執(zhí)行的或者以其他的方式在機(jī)器可讀介質(zhì)上或內(nèi)部實(shí)施或?qū)崿F(xiàn)的固件和軟件代碼。機(jī)器可讀介質(zhì)包括用于存儲(chǔ)或傳輸機(jī)器(例如計(jì)算機(jī))可讀形式的信息的任何機(jī)制。例如,機(jī)器可讀介質(zhì)可包括但不限于只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、磁盤存儲(chǔ)介質(zhì)、光存儲(chǔ)介質(zhì)、閃存裝置或諸如此類。另外,機(jī)器可讀介質(zhì)可包括傳播信號(hào),例如電的、光的、聲的或其他形式的傳播信號(hào)(例如載波、紅外信號(hào)、數(shù)字信號(hào)等)。以上對(duì)本發(fā)明所示實(shí)施例的描述以及摘要中所描述的內(nèi)容并不旨在是窮舉的或者將本發(fā)明限定為所公開的精確形式。雖然出于說明目的在本文中描述了本發(fā)明的特定實(shí)施例和例子,但是正如相關(guān)領(lǐng)域的技術(shù)人員將會(huì)意識(shí)到的,在本發(fā)明范圍內(nèi),各種等同的修改是可能的。根據(jù)上面詳細(xì)的描述可對(duì)本發(fā)明實(shí)施這些修改。下面的權(quán)利要求書中所用的術(shù)語不應(yīng)當(dāng)被認(rèn)為是將本發(fā)明限于說明書和權(quán)利要求書中公開的特定實(shí)施例。更確切地,本發(fā)明的范圍將完全由下面的權(quán)利要求書來確定,將依照所制定的權(quán)利要求解釋原則來解釋下面的權(quán)利要求書。
權(quán)利要求
1.一種用于將調(diào)試信息傳輸至遠(yuǎn)程計(jì)算機(jī)的方法,包括 在第一計(jì)算機(jī)系統(tǒng)上執(zhí)行程序代碼;在所述程序代碼的執(zhí)行期間發(fā)生錯(cuò)誤時(shí),調(diào)用網(wǎng)絡(luò)打印驅(qū)動(dòng)器以生成調(diào)試信息; 使用所述網(wǎng)絡(luò)打印驅(qū)動(dòng)器生成調(diào)試信息;以及通過網(wǎng)絡(luò)適配器將所述調(diào)試信息傳輸至遠(yuǎn)程計(jì)算機(jī)系統(tǒng)。
2.如權(quán)利要求1所述的方法,還包括在所述調(diào)試信息的生成期間停止所述程序代碼的執(zhí)行; 在所述調(diào)試信息的生成之后重新開始所述程序代碼的執(zhí)行。
3.如權(quán)利要求1所述的方法,還包括 從所述調(diào)試信息構(gòu)建調(diào)試信息節(jié)點(diǎn)。
4.如權(quán)利要求3所述的方法,其中所述調(diào)試信息節(jié)點(diǎn)包括選自包括下列項(xiàng)的組的數(shù)據(jù)優(yōu)先級(jí)、時(shí)間戳、主機(jī)ID、元數(shù)據(jù)、分隔符和調(diào)試信息。
5.如權(quán)利要求4所述的方法,其中所述元數(shù)據(jù)包括選自包括下列項(xiàng)的組的數(shù)據(jù)模塊名、子模塊名、優(yōu)先級(jí)、文件名和行號(hào)。
6.如權(quán)利要求4所述的方法,其中所述分隔符包括選自包括下列項(xiàng)的組的數(shù)據(jù)項(xiàng)目名和序號(hào)。
7.如權(quán)利要求3所述的方法,其中所述第一計(jì)算機(jī)系統(tǒng)依照可擴(kuò)展固件接口(EFI)框架規(guī)范進(jìn)行操作。
8.如權(quán)利要求7所述的方法,還包括在未能將所述調(diào)試信息自所述第一計(jì)算機(jī)系統(tǒng)傳輸?shù)剿鲞h(yuǎn)程計(jì)算機(jī)系統(tǒng)時(shí)將所述調(diào)試信息緩沖進(jìn)所述第一計(jì)算機(jī)系統(tǒng)的非易失性存儲(chǔ)器;以及重新嘗試將存儲(chǔ)在緩沖器中的所述調(diào)試信息傳送至所述遠(yuǎn)程計(jì)算機(jī)系統(tǒng)。
9.一種用于將調(diào)試信息傳輸至遠(yuǎn)程計(jì)算機(jī)的方法,包括 在網(wǎng)絡(luò)打印驅(qū)動(dòng)器中接收來自計(jì)算機(jī)程序的調(diào)試信息;根據(jù)存儲(chǔ)在配置模塊中的配置參數(shù)過濾所述調(diào)試信息;利用來自所述配置模塊的可配置參數(shù)從所過濾的調(diào)試信息構(gòu)建調(diào)試信息節(jié)點(diǎn);利用調(diào)度器通過網(wǎng)絡(luò)適配器傳輸所述節(jié)點(diǎn)。
10.如權(quán)利要求9所述的方法,還包括在未能通過所述網(wǎng)絡(luò)適配器傳輸所述節(jié)點(diǎn)時(shí),將所述節(jié)點(diǎn)緩沖進(jìn)存儲(chǔ)裝置。
11.如權(quán)利要求10所述的方法,其中所述可配置參數(shù)選自由下列項(xiàng)組成的組優(yōu)先級(jí)、 時(shí)間戳、主機(jī)ID、元數(shù)據(jù)、分隔符、調(diào)試信息、模塊名、子模塊名、優(yōu)先級(jí)、文件名、行號(hào)、項(xiàng)目名和序號(hào)。
12.—種記錄調(diào)試信息的計(jì)算機(jī)系統(tǒng),包括 處理器;可操作耦合至所述處理器的網(wǎng)絡(luò)適配器;以及至少一個(gè)存儲(chǔ)裝置,在所述至少一個(gè)存儲(chǔ)裝置上存有計(jì)算機(jī)程序代碼,在由所述處理器執(zhí)行時(shí)所述計(jì)算機(jī)程序代碼實(shí)施下列操作,包括 接收來自計(jì)算機(jī)程序的調(diào)試信息;根據(jù)存儲(chǔ)在配置模塊中的配置參數(shù)過濾所述調(diào)試信息;利用來自所述配置模塊的可配置參數(shù)從所過濾的調(diào)試信息構(gòu)建調(diào)試信息節(jié)點(diǎn);利用調(diào)度器通過網(wǎng)絡(luò)適配器傳輸所述節(jié)點(diǎn)。
13.如權(quán)利要求12所述的計(jì)算機(jī)系統(tǒng),所述調(diào)試信息節(jié)點(diǎn)包括選自由下列項(xiàng)組成的組的數(shù)據(jù)優(yōu)先級(jí)、時(shí)間戳、主機(jī)ID、元數(shù)據(jù)、分隔符、調(diào)試信息、模塊名、子模塊名、優(yōu)先級(jí)、文件名、行號(hào)、項(xiàng)目名和序號(hào)。
14.如權(quán)利要求12所述的計(jì)算機(jī)系統(tǒng),其中所述網(wǎng)絡(luò)適配器是有線以太網(wǎng)卡。
15.如權(quán)利要求12所述的計(jì)算機(jī)系統(tǒng),其中所述網(wǎng)絡(luò)適配器是無線以太網(wǎng)卡。
16.如權(quán)利要求12所述的計(jì)算機(jī)系統(tǒng),還包括用于設(shè)置所述配置參數(shù)的用戶接口。
全文摘要
描述了一種用于遠(yuǎn)程記錄調(diào)試信息的方法和系統(tǒng)。在執(zhí)行過程中發(fā)生錯(cuò)誤時(shí)計(jì)算機(jī)執(zhí)行程序代碼生成調(diào)試信息。接著利用網(wǎng)絡(luò)適配器將該調(diào)試信息發(fā)送至遠(yuǎn)程計(jì)算機(jī)。在一個(gè)實(shí)施例中,執(zhí)行程序的計(jì)算機(jī)是順應(yīng)可擴(kuò)展固件接口(EFI)的。
文檔編號(hào)G06F11/34GK102253882SQ20111015883
公開日2011年11月23日 申請(qǐng)日期2004年12月31日 優(yōu)先權(quán)日2004年12月31日
發(fā)明者C·宋, R·簡(jiǎn), Y·孫, Y·鄧, Z·王 申請(qǐng)人:英特爾公司