專利名稱::基于程序執(zhí)行不穩(wěn)定性狀態(tài)為軟件程序提供自定義產(chǎn)品支持的方法、系統(tǒng)和設(shè)備的制作方法
背景技術(shù):
:軟件開發(fā)周期中最重要的階段之一是調(diào)試階段,它在軟件產(chǎn)品已經(jīng)被發(fā)貨到客戶之后發(fā)生。這個階段很重要,因為軟件產(chǎn)品的用戶的實際經(jīng)驗可在這個階段期間被利用以查出程序錯誤,識別常用和不常用的特征,并且總體地使軟件產(chǎn)品更好和更穩(wěn)定。在發(fā)布后調(diào)試階段中分析的主要焦點一般是識別最常發(fā)生的程序錯誤(在本文也稱為“故障(bug)”)。通過識別最常發(fā)生的故障并排除它們,可以改進許多用戶的可用性體驗。然而,還有另一類別的分析,通常不能由前面的發(fā)布后調(diào)試系統(tǒng)解決。這個類別包括識別在一個應(yīng)用程序執(zhí)行期間最常遭遇問題的計算機系統(tǒng)。這些問題可包括或者可不包括在所有用戶中最常發(fā)生的程序錯誤。統(tǒng)計顯示少數(shù)用戶經(jīng)歷了整個問題全部數(shù)量的高百分比。這類問題可包括程序崩潰、程序掛起、突發(fā)程序終止和其它類型的異常程序終止。表現(xiàn)出這些類型問題的應(yīng)用程序在本文通常認為是“不穩(wěn)定的(unstable)”或具有“程序執(zhí)行不穩(wěn)定性(programexecutioninstability)”。一個不穩(wěn)定的程序?qū)τ谠谑褂迷摮绦驎r經(jīng)常遭遇問題的計算機用戶可以是特別令人受挫的。先前的發(fā)布后調(diào)試系統(tǒng)沒有提供識別具有最高頻率的程序執(zhí)行不穩(wěn)定性的計算機系統(tǒng)的方法,并且因此沒有為軟件開發(fā)者提供一種協(xié)助用戶經(jīng)歷這些問題的機制。因此,存在對一種方法、系統(tǒng)和設(shè)備的需求,用于識別具有高頻率的程序執(zhí)行不穩(wěn)定性的計算機系統(tǒng)并且用于提供為這樣一種計算機系統(tǒng)的用戶提供自定義產(chǎn)品支持。正是基于這些和其它考慮作出了本發(fā)明的各種實施例。
發(fā)明內(nèi)容按照本發(fā)明的實施例,上面和其它問題是由一種方法和設(shè)備解決的,該方法和設(shè)備基于執(zhí)行不穩(wěn)定性的狀態(tài)為計算機程序提供自定義產(chǎn)品支持。通過識別具有各不相同等級的程序執(zhí)行不穩(wěn)定性的計算機系統(tǒng),可以將自定義產(chǎn)品支持提供給具有最高頻率的程序執(zhí)行錯誤的用戶。因為自定義產(chǎn)品支持的供應(yīng)基于根據(jù)閾值分類成程序不穩(wěn)定性的狀態(tài),所以可調(diào)整閾值為不定數(shù)量的用戶提供自定義產(chǎn)品支持。按照本發(fā)明的一個方面,提供一種基于程序執(zhí)行不穩(wěn)定性的狀態(tài)為軟件程序提供自定義產(chǎn)品支持的方法。按照該方法,監(jiān)視軟件程序的執(zhí)行在一段時間來確定程序的執(zhí)行穩(wěn)定性?;诒O(jiān)視并且基于一個或多個不穩(wěn)定性閾值級別,程序的執(zhí)行穩(wěn)定性被分類到一個狀態(tài)之中。例如,程序的穩(wěn)定性可被分類成“好”、“差”或“很差”?;诜诸?,可為執(zhí)行程序的計算機系統(tǒng)用戶提供自定義產(chǎn)品支持。例如,基于分類可提供免費或減少費用的產(chǎn)品支持??晒┨鎿Q地,可將計算機的用戶引向一個信息資源諸如一個網(wǎng)頁,它是根據(jù)狀態(tài)確定的。同樣,可執(zhí)行診斷程序來基于分類識別和修理與計算機系統(tǒng)和應(yīng)用程序有關(guān)的問題。按照該方法的各個方面,在一段時間上監(jiān)視軟件程序的執(zhí)行可通過每次執(zhí)行程序時在日志中生成一個會話條目來完成。會話條目包括識別程序的數(shù)據(jù),執(zhí)行程序的時間長度,和表示程序是正常還是異常終止的數(shù)據(jù)。異常終止可包括程序崩潰、程序掛起(其中程序繼續(xù)執(zhí)行,但顯得不響應(yīng)于用戶)或者任何其它類型的異常終止(諸如在程序正在執(zhí)行時將計算機切斷電源)。程序的執(zhí)行穩(wěn)定性可基于對日志的分析來確定。具體地說,可產(chǎn)生一個或多個統(tǒng)計信息來描述程序的執(zhí)行穩(wěn)定性。例如,可計算出每一定程序執(zhí)行次數(shù)中的異常終止的次數(shù)。同樣,可計算出程序執(zhí)行每若干分鐘其中的異常終止的次數(shù)。也可產(chǎn)生其它類型的統(tǒng)計信息。為了將程序的執(zhí)行穩(wěn)定性分類到一個狀態(tài)之中,可使用一個或多個不穩(wěn)定性閾值級別。閾值級別可存儲在計算機系統(tǒng)上并且可在一個遠程控制文件中從服務(wù)器計算機周期地更新閾值級別。各閾值級別定義了應(yīng)當(dāng)用于分類程序執(zhí)行的穩(wěn)定性的值。將閾值級別與統(tǒng)計信息比較,將程序的穩(wěn)定性分類到程序執(zhí)行不穩(wěn)定性的一個或多個狀態(tài)之中??稍谶h程控制文件中為不同版本的程序提供閾值??芍芷诘匦薷倪h程控制文件的內(nèi)容以改變閾值級別??蓪⒈景l(fā)明實現(xiàn)為計算機過程、計算設(shè)備或系統(tǒng)或者制造品諸如計算機程序產(chǎn)品或計算機可讀介質(zhì)。計算機程序產(chǎn)品可以是由計算機系統(tǒng)可讀的并且編碼執(zhí)行計算機過程的指令的計算機程序的計算機存儲介質(zhì)。計算機程序產(chǎn)品也可以是由計算系統(tǒng)可讀的并且編碼執(zhí)行計算機過程的指令的計算機程序的載體上的傳播信號。作為本發(fā)明實施例的特征的這些和各種其它特征以及優(yōu)點,通過閱讀下面的詳細描述和審閱相關(guān)聯(lián)的附圖將是顯而易見的。圖1是一個網(wǎng)絡(luò)圖,例示用于實現(xiàn)本發(fā)明各種方面的計算機網(wǎng)絡(luò)的情景;圖2是一個計算機系統(tǒng)體系結(jié)構(gòu)圖,例示在本發(fā)明各種實施例中使用和由它們提供的計算機系統(tǒng);圖3-7是流程圖,例示由本發(fā)明各種實施例提供和在它們中使用的過程詳細說明現(xiàn)在參考附圖,其中相同的數(shù)字表示相同的元素,描述本發(fā)明的各種方面。具體地說,圖1和相應(yīng)的討論是要提供一個適合于在其中實現(xiàn)本發(fā)明實施例的簡短、一般的描述。盡管在結(jié)合個人計算機的操作系統(tǒng)上運行的程序模塊執(zhí)行的程序模塊的一般上下文中描述本發(fā)明,但本領(lǐng)域熟練技術(shù)人員將認識到,本發(fā)明也可結(jié)合其它類型的計算機系統(tǒng)和程序模塊來實現(xiàn)。通常,程序模塊包括例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)和其它類型的執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的結(jié)構(gòu)。而且,本領(lǐng)域熟練技術(shù)人員將意識到,本發(fā)明可在其它計算機系統(tǒng)配置下實施,包括手持設(shè)備、多處理器系統(tǒng)、基于微處理器或可編程消費電子產(chǎn)品、小型機、大型機等等。本發(fā)明也可在分布式計算環(huán)境中實施,其中任務(wù)是由通過通信網(wǎng)絡(luò)鏈接的遠程處理設(shè)備執(zhí)行的。在分布式計算環(huán)境中,程序模塊可定位在本地和遠程兩者的存儲器存儲設(shè)備中?,F(xiàn)在參考附圖,其中在這幾個附圖中相同的數(shù)字表示相同的元素,描述本發(fā)明和示例性操作環(huán)境的方面。圖1示出用于本發(fā)明各種實施例的說明性操作環(huán)境。如圖1所示,客戶機計算機2在本發(fā)明各種實施例中使用??蛻魴C計算機包括一個標(biāo)準(zhǔn)的臺式或服務(wù)器計算機,它可用于執(zhí)行一個或多個程序模塊??蛻魴C計算機2也配備了用于監(jiān)視應(yīng)用程序的執(zhí)行和用于確定程序的執(zhí)行穩(wěn)定性的程序模塊。客戶機計算機2也用于基于一個或多個閾值分類程序的穩(wěn)定性并且基于該分類為應(yīng)用提供自定義的產(chǎn)品支持。為了分類在客戶機計算機2處執(zhí)行的程序的穩(wěn)定性,客戶機計算機2也可用于周期性地從一個由軟件程序的開發(fā)者操作的錯誤匯報服務(wù)器計算機10接收一個遠程控制文件。錯誤匯報服務(wù)器計算機10包括一個通過LAN或互聯(lián)網(wǎng)8維護和可訪問的常規(guī)服務(wù)器計算機。錯誤匯報服務(wù)器計算機10是由感興趣的應(yīng)用程序的開發(fā)者操作的。有關(guān)內(nèi)容和遠程控制文件的使用的其它細節(jié)將在下面相對于圖2-7提供。產(chǎn)品支持服務(wù)器計算機6也可由開發(fā)者操作以提供自定義產(chǎn)品支持。例如,產(chǎn)品支持服務(wù)器可提供基于用戶經(jīng)歷的程序不穩(wěn)定性的等級的網(wǎng)頁或其它信息。現(xiàn)在參考圖2,描述在本發(fā)明各種環(huán)境中使用的客戶機計算機2的說明性計算機體系結(jié)構(gòu)。圖2所示的計算機體系結(jié)構(gòu)例示一個常規(guī)的臺式或膝上型計算機,包括中央處理單元5(“CPU”)、系統(tǒng)存儲器7(包括隨機存取存儲器9(“RAM”)和只讀存儲器(“ROM”)11)和將存儲器耦合到CPU5的系統(tǒng)總線12。包含如在啟動時幫助計算機內(nèi)元件之間傳送信息的基本例程的基本輸入/輸出系統(tǒng)存儲在ROM11之中。計算機2還包括大容量存儲器14用于存儲操作系統(tǒng)16、應(yīng)用程序18和將在下面詳細描述的其它程序模塊。大容量存儲設(shè)備14通過連接到總線12的大容量存儲控制器(未示出)連接到CPU5。大容量存儲設(shè)備14及其相關(guān)聯(lián)的計算機可讀介質(zhì)為計算機2提供非易失性存儲。盡管本文中包含的計算機可讀介質(zhì)的描述指大容量存儲設(shè)備,諸如硬盤或CD-ROM驅(qū)動器,但本領(lǐng)域熟練技術(shù)人員應(yīng)當(dāng)意識到,計算機可讀介質(zhì)可以是可以由計算機2訪問的任何可用的介質(zhì)。作為例子,且非限制性地,計算機可讀介質(zhì)可包括計算機存儲介質(zhì)和通信介質(zhì)。計算機存儲介質(zhì)包括以任何用于存儲信息諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)的任何方法或技術(shù)實現(xiàn)的易失性和非易失性、可移動和不可移動的介質(zhì)。計算機存儲介質(zhì)包括,但不限于,RAM、ROM、EPROM、EEPROM、閃存或其它固態(tài)存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(“DVD”)或其它光存儲、磁盒、磁帶、磁盤存儲或其它磁存儲設(shè)備,或者任何可以用于存儲想要的信息且可以由計算機2訪問的任何其它介質(zhì)。按照本發(fā)明各種方面,計算機2可在使用通過網(wǎng)絡(luò)8如互聯(lián)網(wǎng)邏輯連接到遠程計算機的網(wǎng)絡(luò)化環(huán)境中運行??蛻魴C計算機2可通過連接到總線12的網(wǎng)絡(luò)接口單元20連接到網(wǎng)絡(luò)8。應(yīng)當(dāng)意識到,網(wǎng)絡(luò)接口單元20也可用于連接到其它類型的網(wǎng)絡(luò)和遠程計算機系統(tǒng)。計算機2也可包括一個輸入/輸出控制器22用于從許多其它設(shè)備(包括鍵盤、鼠標(biāo)或電子輸入筆(圖1中未示出))接收和處理輸入。同樣,輸入/輸出控制器22可提供輸出至顯示屏幕、打印機或其它類型的輸出設(shè)備。如上面簡要所述,許多程序模塊和數(shù)據(jù)文件可存儲在大容量存儲設(shè)備14和計算機2的RAM9之中,包括適合于控制網(wǎng)絡(luò)化個人計算機的操作的操作系統(tǒng)16諸如來自華盛頓(Washington)的雷德蒙德(Redmond)的MICROSOFT公司的WINDOWSXP操作系統(tǒng)。大容量存儲設(shè)備14和RAM9也可存儲一個或多個程序模塊。具體地說,大容量存儲設(shè)備14和RAM9可存儲應(yīng)用穩(wěn)定性監(jiān)視程序24,用于監(jiān)視一個或多個應(yīng)用程序18的執(zhí)行穩(wěn)定性并且如果程序變成超過某個可設(shè)置的閾值而不穩(wěn)定則為應(yīng)用程序18提供自定義產(chǎn)品支持??身憫?yīng)于用于捕捉和處理客戶機計算機2內(nèi)的程序執(zhí)行異常的異常處理程序32的執(zhí)行來執(zhí)行應(yīng)用穩(wěn)定性監(jiān)視程序24。也可由客戶機計算機2的用戶人工地執(zhí)行應(yīng)用穩(wěn)定性監(jiān)視程序24。為了監(jiān)視應(yīng)用程序18的穩(wěn)定性,應(yīng)用穩(wěn)定性監(jiān)視24使用事件服務(wù)26的服務(wù)。事件服務(wù)16是由操作系統(tǒng)26為將在客戶機計算機2處發(fā)生的事件記錄到事件日志28的功能程序。例如,事件服務(wù)26可記錄安全相關(guān)事件(例如,未經(jīng)授權(quán)的登入企圖)、系統(tǒng)相關(guān)事件(例如,經(jīng)歷故障的盤驅(qū)動器)和應(yīng)用相關(guān)事件。如下面將更詳細描述的,關(guān)于應(yīng)用程序28的執(zhí)行和故障的事件記錄在事件日志18中。具體地說,每次執(zhí)行應(yīng)用程序時可在事件日志28中生成一個會話條目。會話條目包括識別程序的數(shù)據(jù),執(zhí)行程序的時間長度和表示程序是正常還是異常終止的數(shù)據(jù)。異常終止可包括程序崩潰、程序掛起(其中程序繼續(xù)執(zhí)行,但顯得不響應(yīng)于用戶)或者任何其它類型的異常終止(諸如如果在程序正在執(zhí)行的同時從計算機切斷電源)。如下面將更詳細地描述的,可周期性地分析事件日志28并且產(chǎn)生描述應(yīng)用程序18的穩(wěn)定性的統(tǒng)計信息。統(tǒng)計信息可包括計算定義每若干次程序執(zhí)行中的異常終止次數(shù)、程序執(zhí)行每若干鐘數(shù)中的異常終止次數(shù)的數(shù)據(jù),或者表示應(yīng)用程序18的穩(wěn)定性的其它類型的統(tǒng)計信息。一旦產(chǎn)生了統(tǒng)計信息,可基于統(tǒng)計信息和存儲在遠程控制文件36中的一個或多個閾值將程序的執(zhí)行穩(wěn)定性分類到諸狀態(tài)之中。閾值定義程序不穩(wěn)定性的各種等級。例如,可定義將程序模塊的執(zhí)行分類為“好”、“差”或“非常差”的閾值。按照本發(fā)明的一個實施例,“好”閾值表示應(yīng)用程序足夠穩(wěn)定,不應(yīng)當(dāng)采取動作?!安睢遍撝当硎緫?yīng)用程序在某種程度上不穩(wěn)定,但其不穩(wěn)定還不足以批準(zhǔn)向用戶提供免費或減少費用的產(chǎn)品支持??蓪⒂脩粢皆\斷或其它信息。“非常差”閾值表示應(yīng)用穩(wěn)定性如此之差,使得批準(zhǔn)免費或減少費用的產(chǎn)品支持。應(yīng)當(dāng)意識到,可定義三個以上的閾值并且這些閾值的定義可按照軟件產(chǎn)品及其開發(fā)者變化。應(yīng)當(dāng)意識到,應(yīng)用程序的性能的監(jiān)視和自定義支持的提供可由應(yīng)用程序的開發(fā)者在一個一個應(yīng)用的基礎(chǔ)上來進行。可周期性地更新遠程控制文件36的內(nèi)容并從錯誤匯報服務(wù)器計算機10發(fā)送到客戶機計算機2。遠程控制文件36也可存儲每個閾值的有效期,它們定義一個時間,在這個時間之后不應(yīng)當(dāng)使用這些閾值。遠程控制文件36也可存儲每個閾值的應(yīng)用版本數(shù)字。應(yīng)用版本數(shù)字允許將不同的閾值分配給可能安裝并在客戶機計算機2處使用的不同版本應(yīng)用程序。應(yīng)當(dāng)意識到,遠程控制文件36可存儲其它數(shù)據(jù),并且可用于以其它方式控制客戶機計算機2的操作。有關(guān)遠程控制文件的內(nèi)容和使用的更多信息可以在共同待批的美國專利申請?zhí)?0/304,282中找到,其標(biāo)題為“MethodandSystemforRemotelyControllingtheReportingofEventsOccurringwithinaComputerSystem(遠程控制計算機系統(tǒng)內(nèi)發(fā)生事件的匯報的方法和系統(tǒng))”,并且通過引用明確地將它包括在本文中?;谒峙涞拈撝?,可由應(yīng)用穩(wěn)定性監(jiān)視24為執(zhí)行程序的計算機系統(tǒng)的用戶提供自定義產(chǎn)品支持。例如,基于分類,可將用戶引到免費或減少費用的產(chǎn)品支持??晒┨鎿Q地,可將計算機的用戶引到一個信息資源諸如一個網(wǎng)頁,它是基于分類確定的。同樣,可執(zhí)行診斷程序34以基于分類來識別和修理與計算機系統(tǒng)和應(yīng)用程序有關(guān)的問題。按照本發(fā)明的實施例,操作系統(tǒng)16用于在注冊表30中存儲數(shù)據(jù)。注冊表30是一個用于存儲配置客戶機計算機2用于一個或多個用戶、應(yīng)用和硬件設(shè)備所需的信息的中心分層數(shù)據(jù)庫。例如,注冊表30用于存儲“最后調(diào)整時間(lastfixtime)”注冊表關(guān)鍵字,它識別由診斷程序34對客戶機計算機上的軟件組件進行修理的最后時間。注冊表30還用于存儲“診斷狀態(tài)”注冊表關(guān)鍵字,它識別當(dāng)前用戶與應(yīng)用穩(wěn)定性監(jiān)視24的先前交互。用于診斷狀態(tài)注冊表關(guān)鍵字的可能值是“新的(new)”(用戶先前還沒有使用過應(yīng)用穩(wěn)定性監(jiān)視24)、“改變的(altered)”(先前執(zhí)行了診斷程序34并且對客戶機計算機2作出了改變)、“識別的(identified)”(執(zhí)行了診斷程序34并且確定引起不穩(wěn)定性的問題在應(yīng)用程序18的外部(例如,諸如硬件故障))和“幫助(help)”(執(zhí)行了診斷程序34并且將用戶引到產(chǎn)品支持專用程序(“PSS”)形式的客戶支持)。如下面將更詳細地描述的,“診斷狀態(tài)”注冊表關(guān)鍵字的值用于確定應(yīng)當(dāng)如何為用戶處理一個新遭遇問題。關(guān)于事件日志28的創(chuàng)建的其它細節(jié)、異常處理程序32的操作和應(yīng)用穩(wěn)定性監(jiān)視24的操作可在下面參考圖3-7更詳細地提供?,F(xiàn)在參考圖3,描述一個說明性例程300,它例示用于在事件日志28中創(chuàng)建記錄所執(zhí)行的過程。當(dāng)閱讀在本文提供的例程的討論時,應(yīng)當(dāng)意識到,將本發(fā)明的各種實施例的邏輯操作實現(xiàn)(1)為一系列計算機實現(xiàn)的在計算系統(tǒng)上運行的行為或程序模塊和/或?qū)崿F(xiàn)(2)為在計算系統(tǒng)內(nèi)互連的機器邏輯電路或電路模塊。實現(xiàn)是一個選擇問題,取決于實現(xiàn)本發(fā)明的計算系統(tǒng)的性能要求。因此,圖3-7中例示的并且構(gòu)成本文所述的本發(fā)明的實施例的邏輯操作被不同地稱為操作、結(jié)構(gòu)設(shè)備、行為或模塊。本領(lǐng)域熟練技術(shù)人員將認識到,這些操作、結(jié)構(gòu)設(shè)備、行為和模塊可用軟件、固件、專用數(shù)字邏輯和它們的任何組合可在不脫離本文的權(quán)利要求書所述的本發(fā)明的精神和范圍的情況下來實現(xiàn)。例程300在操作302處開始,其中由事件服務(wù)26作出關(guān)于應(yīng)用程序18之一是否已經(jīng)啟動的判定。如果還沒有啟動應(yīng)用程序,則例程300返回到判定操作302,其中作出另一個判定。如果應(yīng)用程序已經(jīng)啟動了,則例程300繼續(xù)至操作306,其中將啟動應(yīng)用的時間存儲在存儲器。從操作306,例程300繼續(xù)至操作308,其中事件服務(wù)26判定應(yīng)用程序是否是正常退出的,諸如響應(yīng)于用戶請求。如果應(yīng)用程序正常退出,則例程300轉(zhuǎn)移到操作310,其中在存儲器內(nèi)儲存表示應(yīng)用正常退出的數(shù)據(jù)。例程300隨后繼續(xù)至操作312,其中在會話期間執(zhí)行應(yīng)用的時間長度被記錄在存儲器中。例程300隨后從操作312繼續(xù)到操作304,其中在事件日志28中為當(dāng)前應(yīng)用會話創(chuàng)建一個新的條目(“一個會話條目”)。記錄在存儲中關(guān)于程序的執(zhí)行的數(shù)據(jù)隨后被存儲在會話條目中。這些操作可在異常處理程序內(nèi)執(zhí)行。從操作304,例程300繼續(xù)至操作320,并在該處結(jié)束。如果在操作308處,事件服務(wù)26判定應(yīng)用程序沒有正常地終止它的執(zhí)行,則例程300從操作308繼續(xù)至操作314。在判定操作314處,作出關(guān)于應(yīng)用程序是否已經(jīng)掛起的判定。掛起的應(yīng)用是看起來顯得正在執(zhí)行但不響應(yīng)于用戶輸入的應(yīng)用。應(yīng)當(dāng)意識到,關(guān)于一個程序是否已經(jīng)掛起的判定可以由操作系統(tǒng)或由其它程序來作出。如果應(yīng)用顯得已經(jīng)掛起,則例程300從操作314轉(zhuǎn)移至操作316。如果應(yīng)用還沒有掛起,則例程300從操作314繼續(xù)至判定操作322。在判定操作322處,作出關(guān)于應(yīng)用程序是否崩潰的判定。程序崩潰指程序不能正確執(zhí)行的故障,導(dǎo)致程序操作中止。如果在操作322處檢測到崩潰,則例程300轉(zhuǎn)移至操作316。如果沒有檢測到崩潰,則操作300繼續(xù)至操作320,并在該處結(jié)束。應(yīng)當(dāng)意識到,在程序崩潰的情況下,操作系統(tǒng)可以強制一個崩潰的應(yīng)用程序自動地關(guān)閉。在掛起程序的情況下,通知程序被掛起并重新啟動程序取決于用戶。在操作316處,在適當(dāng)時候?qū)⒈硎驹诒罎⒒驋炱鹬薪Y(jié)束的會話的數(shù)據(jù)寫到存儲器中。例程300隨后繼續(xù)至操作318,其中將在崩潰或掛起之前執(zhí)行應(yīng)用的長度記錄在存儲器中。例程300隨后從操作318繼續(xù)至操作319,其中由操作系統(tǒng)處理異常。有關(guān)異常處理程序32的操作方面下面相對于圖5提供。例程300隨后繼續(xù)操作至操作304,其中在事件日志28中創(chuàng)建一個新的條目用于當(dāng)前應(yīng)用會話。記錄在存儲器關(guān)于程序的執(zhí)行的數(shù)據(jù)隨后被存儲在會話條目中。從操作319,例程300繼續(xù)至操作320,并在該處結(jié)束。現(xiàn)在參考圖4,提供用于完成事件日志中會話條目的例程400的結(jié)節(jié)。按照本發(fā)明的實施例,例程400在客戶機計算機2上在啟動時執(zhí)行,以完成事件日志28中還沒有完成的會話條目。未完成的會話條目可以發(fā)生,例如,如果應(yīng)用正在執(zhí)行時將計算機2切斷電源,如果一個崩潰導(dǎo)致操作系統(tǒng)16的崩潰,或者在不能將終止類型和會話長度寫到事件日志28中的任何其它情況下。例程400在操作402處開始,其中作出關(guān)于先前的會話條目是否完整的判定。如果會話條目是完整的,則不需要在會話條目上執(zhí)行任何進一步的處理。因此,如果會話條目是完整的,則例程400從操作402轉(zhuǎn)移到操作412并結(jié)束。如果會話條目不是完整的,則例程400繼續(xù)至操作406,其中在會話條目中作出應(yīng)用程序異常終止的指示。例程400隨后繼續(xù)至操作412并結(jié)束?,F(xiàn)在參考圖5,描述關(guān)于異常處理程序32操作的其它細節(jié)。如上面簡要地討論的,在應(yīng)用程序的異常終止之后調(diào)用異常處理程序32。應(yīng)當(dāng)意識到,異常處理程序32執(zhí)行比圖5所示的那些多得多的功能用于捕捉和處理異常。只有與應(yīng)用穩(wěn)定性監(jiān)視24操作的討論有關(guān)的異常處理程序執(zhí)行的那些功能才在圖5中示出并在本文討論。例程500在操作502處開始,其中作出關(guān)于在客戶機計算機2處實現(xiàn)的政策或表示用戶不要被匯報打擾的注冊表條目是否阻止應(yīng)用穩(wěn)定性監(jiān)視24的執(zhí)行的判定。如果是,則例程500轉(zhuǎn)移到操作512并結(jié)束。如果否,例程500繼續(xù)至操作504,其中作出關(guān)于用戶界面(“UI”)煩擾節(jié)制(pesterthrottle)是否阻止應(yīng)用穩(wěn)定性監(jiān)視24執(zhí)行。UI煩擾節(jié)制防止用戶被與應(yīng)用性能監(jiān)視有關(guān)的UI太頻繁地打擾。如果UI煩擾節(jié)制阻止應(yīng)用穩(wěn)定性監(jiān)視24的執(zhí)行,則例程500轉(zhuǎn)移到操作512并結(jié)束。否則,例程500繼續(xù)至操作506,其中作出關(guān)于審查煩擾節(jié)制(auditpesterthrottle)是否阻止應(yīng)用穩(wěn)定性監(jiān)視24的執(zhí)行。審查煩擾節(jié)制使應(yīng)用穩(wěn)定性監(jiān)視24不要太頻繁地執(zhí)行并且不要影響客戶機計算機2的性能。如果審查煩擾節(jié)制阻止了應(yīng)用穩(wěn)定性監(jiān)視24的執(zhí)行,則例程50轉(zhuǎn)移到操作512并結(jié)束。否則例程500從操作506繼續(xù)至操作508。關(guān)于UI煩擾節(jié)制和審查煩擾節(jié)制的操作的其它細節(jié)可以在共同待批的美國專利申請序列號10/305,215中找到,其標(biāo)題為“QueuedModeTransmissionofEventReports(事件報告的隊列化方式傳輸)”,并且通過引用將它明確地包括在本文中。現(xiàn)在參考圖6,提供有關(guān)應(yīng)用穩(wěn)定性監(jiān)視24操作的其它細節(jié)。具體地說,描述執(zhí)行應(yīng)用穩(wěn)定性監(jiān)視24的例程600。例程600在操作602處開始,其中執(zhí)行事件日志28的分析。分析事件日志28以將應(yīng)用程序的穩(wěn)定性分類到一個穩(wěn)定性的狀態(tài)之中。如上所述,按照本發(fā)明的一個實施例,可將穩(wěn)定性分類為“好”,“差”和“很差”。下面相對于圖7描述執(zhí)行事件日志分析的說明性例程700。從操作602,例程600繼續(xù)至操作604,其中作出關(guān)于應(yīng)用程序的穩(wěn)定性是否被事件日志分析分類為“好”的判定。如果應(yīng)用程序的穩(wěn)定性是“好”,則例程600轉(zhuǎn)移到操作606,其中作出關(guān)于應(yīng)用穩(wěn)定性監(jiān)視24是否由用戶人工地啟動的判定。如果應(yīng)用穩(wěn)定性監(jiān)視24不是人工啟動的,則例程600轉(zhuǎn)移到操作620并結(jié)束。如果應(yīng)用穩(wěn)定性監(jiān)視24是人工啟動的,則例程600從操作606繼續(xù)至操作608。這允許用戶與應(yīng)用穩(wěn)定性監(jiān)視24交互,如果即使在程序的穩(wěn)定性是“好”的情況下它們也人工地啟動程序。如果在操作604處,判定應(yīng)用程序的穩(wěn)定性由事件日志分析分類為“差”或“非常差”,則例程600從操作604繼續(xù)至操作608。在操作608處,例程600基于如上面描述的診斷狀態(tài)注冊表關(guān)鍵字的當(dāng)前值所定義的用戶與應(yīng)用穩(wěn)定性監(jiān)視的預(yù)檢交互轉(zhuǎn)移到任一操作610、612、614、616或616。如果診斷狀態(tài)注冊表關(guān)鍵字的值是“新的”,則例程600轉(zhuǎn)移到操作610。這意味著用戶先前沒有使用過應(yīng)用穩(wěn)定性監(jiān)視24。因此,可向用戶呈現(xiàn)一個對話框用于執(zhí)行診斷程序34。取決于診斷的結(jié)果,診斷狀態(tài)注冊表關(guān)鍵字的值可設(shè)置為“幫助”、“改變的”或“識別的”。如果診斷狀態(tài)注冊表關(guān)鍵字的值是“診斷改變(diagnosticsaltered)”,則例程600從操作608轉(zhuǎn)移至操作612。這表示先前執(zhí)行了診斷并且在試圖改進它的穩(wěn)定性時對應(yīng)用程序的配置作出了改變。在這點上,可將用戶引向?qū)Ξa(chǎn)品的免費或減少費用的產(chǎn)品支持。取決于被選擇的過程,診斷狀態(tài)注冊表關(guān)鍵字的值可設(shè)置為“幫助”,“改變的”或“識別的”。如果診斷狀態(tài)注冊表關(guān)鍵字的值是“診斷外部(diagnosticsexternal)”,則例程600轉(zhuǎn)移到操作614。這表示先前執(zhí)行了診斷程序34并且檢測到一個除應(yīng)用程序以外的問題。在這種情況下,用戶不被任何用戶界面通知打擾。如果診斷狀態(tài)注冊表關(guān)鍵字的值是“幫助”,則例程600轉(zhuǎn)移到操作618。這表示已經(jīng)向用戶提供了減少費用或免費的產(chǎn)品支持的信息。可再次給用戶這個信息。例如,可將用戶引向可獲得產(chǎn)品支持的產(chǎn)品支持網(wǎng)站。從操作610、612、614和618,例程600繼續(xù)至操作620并結(jié)束?,F(xiàn)在轉(zhuǎn)到圖7,描述分析事件日志28的例程700。例程700在操作700處開始,其中作出關(guān)于要使用哪個版閾的判定。如上所述,要將閾值分配給一個相應(yīng)于客戶機計算機2上的應(yīng)用程序的版本的版本數(shù)字的判定。這允許將不同的閾值分配給同一應(yīng)用程序的不同版本。要使用的閾值版本是基于要對其執(zhí)行分析的應(yīng)用程序的版本確定的。一旦已經(jīng)識別了應(yīng)用程序的版本數(shù)字,例程700就繼續(xù)至操作704,其中作出關(guān)于閾值在該應(yīng)用程序版本的遠程控制文件36中是否存在。如果對于該版本不存在閾值,則例程700轉(zhuǎn)移到操作722,其中返回“好”的閾值。然而,如果適當(dāng)?shù)拈撝荡嬖?,則例程700繼續(xù)至操作706。在操作706處,確定在會話分析中應(yīng)當(dāng)使用的、在事件日志中條目的適當(dāng)時間段。時間段可包括當(dāng)前時間與對加以程序應(yīng)用修理的最后時間之間的時間段??晒┨鎿Q地,如果沒有作出過修理,則時間段可包括當(dāng)前時間與較佳時間窗口之間的時間段(例如30天)。如此,在分析中考慮的日志條目總體是有限的。從操作706,例程700繼續(xù)至操作708,其中作出關(guān)于在統(tǒng)計上有效的最少數(shù)量的會話在事件日志28中對于所計算的時間段是否存在的判定。如果必要的最少數(shù)量會話不存在,則例程700轉(zhuǎn)移到操作722,其中返回“好”的閾值。如果必要的最少數(shù)量會話存在,則例程700從操作708繼續(xù)至操作710。在操作710處,基于事件日志28的內(nèi)容生成多個統(tǒng)計信息,用于時間段和用于描述應(yīng)用程序的穩(wěn)定性的特定應(yīng)用程序。例如,可基于程序執(zhí)行每若干次數(shù)中的異常終止次數(shù)生成統(tǒng)計信息。可生成的另一個統(tǒng)計信息基于程序執(zhí)行每若干分鐘中的異常終止次數(shù)。表示應(yīng)用程序的穩(wěn)定性的其它類型統(tǒng)計信息也可基于在時間段內(nèi)的事件日志28的內(nèi)容生成。應(yīng)當(dāng)意識到,可為單獨的應(yīng)用生成某些統(tǒng)計信息,并且可為應(yīng)用分組諸如應(yīng)用集生成其它統(tǒng)計信息。一旦生成了統(tǒng)計信息,就將統(tǒng)計信息與包含在遠程控制文件36中的閾值比較?;诒容^,應(yīng)用程序的穩(wěn)定性可被分類為“好”、“差”或“非常差”。一旦應(yīng)用程序的穩(wěn)定性被分類,例程700就繼續(xù)至操作712,其中作出關(guān)于程序的穩(wěn)定性是否已被分類成非常差的判定。如果穩(wěn)定性還沒有被分類為非常差,則例程700轉(zhuǎn)移到操作714,其中作出關(guān)于穩(wěn)定性是否已被分類為差的判定。如果穩(wěn)定性已被分類為差,則例程700繼續(xù)操作700,其中返回“差”閾值。如果穩(wěn)定性已被分類為“差”,則例程轉(zhuǎn)移到操作722,其中返回“好”。如果在操作712處,確定閾值已經(jīng)被分類為“非常差”,則例程700繼續(xù)至操作716。在操作716,作出關(guān)于閾值是否已經(jīng)期滿的判定。如上面簡要地討論的,閾值可包括截止期。如果閾值已經(jīng)期滿了,則例程700轉(zhuǎn)移到操作720,其中返回“差”。否則例程700繼續(xù)至操作718,其中返回“非常差”?;谏鲜鰞?nèi)容,應(yīng)當(dāng)意識到,本發(fā)明的各種實施例包括一種方法、系統(tǒng)、設(shè)備和計算機可讀介質(zhì),用于基于執(zhí)行不穩(wěn)定性的等級為計算機程序提供自定義產(chǎn)品支持。上面的描述、例子和數(shù)據(jù)提供制造的完整描述和本發(fā)明的合成的使用。由于可以在不脫離本發(fā)明的精神和范圍的情況下作出本發(fā)明的許多實施例,因此本發(fā)明駐留在本文所附的權(quán)利要求書中。權(quán)利要求1.一種基于程序執(zhí)行不穩(wěn)定性的狀態(tài)為軟件程序提供自定義產(chǎn)品支持,其特征在于,所述方法包括通過一段時間監(jiān)視軟件程序的執(zhí)行,以確定程序的執(zhí)行穩(wěn)定性;基于一個或多個不穩(wěn)定性閾值級別,分類程序的執(zhí)行穩(wěn)定性;以及基于所述分類為軟件程序提供自定義產(chǎn)品支持。2.如權(quán)利要求1所述的方法,其特征在于,通過一段時間監(jiān)視軟件程序的執(zhí)行包括每次執(zhí)行程序時在日志中生成一個會話條目,所述會話條目包括識別程序、執(zhí)行程序的時間長度,以及指示程序的執(zhí)行是正常還是異常終止的數(shù)據(jù)。3.如權(quán)利要求2所述的方法,其特征在于,異常終止包括程序崩潰、程序掛起或異常程序終止中的任一項。4.如權(quán)利要求3所述的方法,其特征在于,確定程序的執(zhí)行穩(wěn)定性包括分析日志以生成描述程序執(zhí)行穩(wěn)定性的一個或多個統(tǒng)計信息。5.如權(quán)利要求4所述的方法,其特征在于,所述統(tǒng)計信息包括每若干次程序執(zhí)行中的異常終止的次數(shù)。6.如權(quán)利要求5所述的方法,其特征在于,所述統(tǒng)計信息還包括程序執(zhí)行每若干分鐘中的異常終止數(shù)量。7.如權(quán)利要求6所述的方法,其特征在于,基于一個或多個不穩(wěn)定性閾值級別分類程序的執(zhí)行穩(wěn)定性包括周期性地接收一遠程控制文件,所述遠程控制文件包含識別程序執(zhí)行不穩(wěn)定性的一個或多個閾值的數(shù)據(jù);以及將每個統(tǒng)計信息與對應(yīng)的閾值比較以將程序的執(zhí)行不穩(wěn)定性分類到程序執(zhí)行不穩(wěn)定性的多個狀態(tài)之一中。8.如權(quán)利要求7所述的方法,其特征在于,所述遠程控制文件包含識別程序的一個或多個版本的程序執(zhí)行不穩(wěn)定性的一個或多個閾值的數(shù)據(jù),并且其中,所述方法還包括在分類程序的執(zhí)行穩(wěn)定性之前確定遠程控制文件是否包含所述程序的版本的閾值。9.如權(quán)利要求8所述的方法,其特征在于,為軟件程序提供自定義產(chǎn)品支持包括將計算機程序的用戶引向一個信息資源,所述信息資源具有基于分類對軟件程序的免費或者減少費用的產(chǎn)品支持。10.如權(quán)利要求8所述的方法,其特征在于,為軟件程序提供自定義產(chǎn)品支持包括將計算機程序的用戶引向一個基于分類識別的信息資源。11.如權(quán)利要求8所述的方法,其特征在于,為軟件程序提供自定義產(chǎn)品支持包括執(zhí)行一個基于分類的診斷程序。12.一種基于程序執(zhí)行不穩(wěn)定性的閾值級別為軟件程序提供自定義產(chǎn)品支持的系統(tǒng),其特征在于,所述系統(tǒng)包括一客戶機計算機,用于從一服務(wù)器計算機接收一遠程控制文件,所述遠程控制文件包含識別軟件程序的一個或多個版本的程序執(zhí)行不穩(wěn)定性的一個或多個閾值的數(shù)據(jù);用于通過一段時間監(jiān)視軟件程序的執(zhí)行來確定程序的執(zhí)行穩(wěn)定性;用于基于包含在遠程控制文件中的程序執(zhí)行不穩(wěn)定性的閾值來分類程序的執(zhí)行穩(wěn)定性;以及用于基于分類為軟件程序提供自定義產(chǎn)品支持。13.如權(quán)利要求12所述的系統(tǒng),其特征在于,通過一段時間監(jiān)視軟件程序的執(zhí)行包括每次執(zhí)行程序時在存儲在客戶機計算機處的日志中生成一個會話條目,所述會話條目包括識別程序、執(zhí)行程序的時間長度,以及指示程序的執(zhí)行是正常還是異常終止的數(shù)據(jù)。14.如權(quán)利要求13所述的系統(tǒng),其特征在于,異常終止包括程序崩潰、程序掛起或異常程序終止中的任一項。15.如權(quán)利要求14所述的系統(tǒng),其特征在于,確定程序的執(zhí)行穩(wěn)定性包括分析在客戶機計算機處的日志以產(chǎn)生描述程序的執(zhí)行穩(wěn)定性的一個或多個統(tǒng)計信息。15.如權(quán)利要求14所述的系統(tǒng),其特征在于,所述統(tǒng)計信息包括程序執(zhí)行每若干次數(shù)中的異常終止次數(shù)。16.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述統(tǒng)計信息還包括程序執(zhí)行每若干分鐘中的異常終止次數(shù)。17.如權(quán)利要求16所述的系統(tǒng),其特征在于,基于一個或多個不穩(wěn)定性閾值級別分類程序的執(zhí)行穩(wěn)定性包括將每個統(tǒng)計信息與對應(yīng)的閾值比較以將程序的執(zhí)行不穩(wěn)定性分類到程序執(zhí)行不穩(wěn)定性的多個狀態(tài)之一中。18.如權(quán)利要求16所述的系統(tǒng),其特征在于,為軟件程序提供自定義產(chǎn)品支持包括將用戶引向一個信息資源,所述信息資源提供取決于程序執(zhí)行不穩(wěn)定性的等級的免費或者減少費用的產(chǎn)品支持。19.如權(quán)利要求16所述的系統(tǒng),其特征在于,為軟件程序提供自定義產(chǎn)品支持包括將所述客戶機計算機的用戶引向一個信息資源,所述信息資源是基于程序執(zhí)行不穩(wěn)定性的等級確定的。20.如權(quán)利要求16所述的系統(tǒng),其特征在于,為軟件程序提供自定義產(chǎn)品支持包括在客戶機計算機上執(zhí)行診斷程序以診斷與程序有關(guān)的問題。21.一種計算機可讀介質(zhì),具有存儲在其上的計算機可執(zhí)行指令,當(dāng)由計算機執(zhí)行所述指令時,使計算機通過一段時間監(jiān)視軟件程序的執(zhí)行以確定程序的執(zhí)行穩(wěn)定性;基于一個或多個不穩(wěn)定性閾值級別分類程序的執(zhí)行穩(wěn)定性;以及基于分類為軟件程序提供自定義產(chǎn)品支持。22.如權(quán)利要求21所述的計算機可讀介質(zhì),其特征在于,通過一段時間監(jiān)視軟件程序的執(zhí)行包括每次執(zhí)行程序時在日志中生成一個會話條目,所述會話條目包括識別程序、執(zhí)行程序的時間長度,以及指示程序的執(zhí)行是正常還是異常終止的數(shù)據(jù)。23.如權(quán)利要求22所述的計算機可讀介質(zhì),其特征在于,異常終止包括程序崩潰、程序掛起或異常程序終止中的任一項。24.如權(quán)利要求23所述的計算機可讀介質(zhì),其特征在于,確定程序的執(zhí)行穩(wěn)定性包括分析日志以生成描述程序的執(zhí)行穩(wěn)定性的一個或多個統(tǒng)計信息。25.如權(quán)利要求24所述的計算機可讀介質(zhì),其特征在于,所述統(tǒng)計信息包括每程序執(zhí)行每若干次數(shù)中的異常終止次數(shù)。全文摘要提供一種基于執(zhí)行不穩(wěn)定性的級別為計算機程序提供自定義產(chǎn)品支持的方法和設(shè)備。通過一段時間監(jiān)視軟件程序的執(zhí)行,確定程序的執(zhí)行穩(wěn)定性?;诒O(jiān)視和基于一個或多個不穩(wěn)定性閾值級別,分類程序的執(zhí)行穩(wěn)定性?;诜诸悶閳?zhí)行程序的計算機系統(tǒng)的用戶提供自定義產(chǎn)品支持。例如,可基于分類提供免費或者減少費用的產(chǎn)品支持。文檔編號G06F11/36GK1755644SQ20051007546公開日2006年4月5日申請日期2005年5月31日優(yōu)先權(quán)日2004年9月30日發(fā)明者A·E·埃蘭德森,B·E·康寧,C·C·懷特,E·A·勒維恩,S·M·格林伯格,T·S·庫恩申請人:微軟公司