国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于標(biāo)識計算機(jī)程序的未響應(yīng)部分的方法、系統(tǒng)和裝置的制作方法

      文檔序號:6642779閱讀:208來源:國知局
      專利名稱:用于標(biāo)識計算機(jī)程序的未響應(yīng)部分的方法、系統(tǒng)和裝置的制作方法
      背景技術(shù)
      軟件開發(fā)周期中最重要的階段之一是在軟件產(chǎn)品已運(yùn)送給客戶之后進(jìn)行的調(diào)試階段。因為軟件產(chǎn)品用戶的實際體驗可在該階段期間用來隔離程序錯誤、標(biāo)識經(jīng)常或不經(jīng)常使用的特征、并使該軟件產(chǎn)品更好并更穩(wěn)定,所以該階段是重要的。
      發(fā)行后調(diào)試階段中分析的主要焦點通常是標(biāo)識最常發(fā)生的程序錯誤(也稱為“缺陷”)。通過標(biāo)識最常發(fā)生的缺陷并修復(fù)它們,可改進(jìn)許多用戶的使用體驗。然而,還有通常是先前的發(fā)行后調(diào)試系統(tǒng)未解決的另一類分析。該類分析涉及標(biāo)識計算機(jī)“暫停”(“hangs”)。暫停是軟件停止響應(yīng)用戶輸入并停止刷新屏幕的時間段。
      盡管被暫停的計算機(jī)程序會繼續(xù)執(zhí)行,但程序通常對用戶完全沒有響應(yīng),因為未接收到輸入也未更新顯示屏。這對用戶而言是非常令人沮喪的,因為用戶并不清除程序是遇到了無法恢復(fù)的致命錯誤還是將完成處理并再次接收輸入并更新顯示屏。如果不響應(yīng)階段延長,則用戶會相信計算機(jī)程序已遭遇了致命錯誤并選擇中止該程序。以這樣的方式中止暫停程序可導(dǎo)致數(shù)據(jù)丟失和系統(tǒng)狀態(tài)不穩(wěn)定。
      如果可標(biāo)識導(dǎo)致不響應(yīng)行為的計算機(jī)程序部分,則可采取眾多步驟的任一步驟來改進(jìn)程序代碼的響應(yīng)。例如,可重新編寫不響應(yīng)部分來異步地或在背景處理線程上執(zhí)行其處理?;蛘?,如果不響應(yīng)是由在程序的主消息環(huán)路上執(zhí)行處理導(dǎo)致的,則可將該處理移出該消息環(huán)路。一旦已經(jīng)標(biāo)識導(dǎo)致不響應(yīng)行為的計算機(jī)程序部分,可對該程序作其它類型的改變以改進(jìn)計算機(jī)程序的響應(yīng)性。因此,需要一種用于標(biāo)識計算機(jī)程序的不響應(yīng)部分的方法、系統(tǒng)和裝置。還需要監(jiān)視實際用戶所遭遇的這種性能問題,并以不降級應(yīng)用程序性能或用戶體驗的方式進(jìn)行。
      本發(fā)明的各個實施例就是基于這些和其它考慮而作出的。

      發(fā)明內(nèi)容
      根據(jù)本發(fā)明一實施例,以上和其它問題通過用于標(biāo)識計算機(jī)程序的不響應(yīng)部分的方法和裝置來解決。通過標(biāo)識計算機(jī)程序的不響應(yīng)部分可改變該程序,這些改變導(dǎo)致較少的不響應(yīng)程序狀態(tài)并因而增加客戶對計算機(jī)程序的滿意度。
      根據(jù)本發(fā)明一方面,提供一種用于標(biāo)識計算機(jī)程序不響應(yīng)部分的方法。根據(jù)該方法,可能導(dǎo)致不響應(yīng)行為的程序代碼被封裝在計時器中。特別地,計時器在程序代碼部分執(zhí)行之初就開啟。該計時器設(shè)置為在指定閾值時間段期滿后終止。當(dāng)計時器在程序代碼部分的執(zhí)行期間終止時,執(zhí)行由計時器調(diào)用的背景線程。
      如果計時器在程序代碼部分的執(zhí)行期間終止,中斷執(zhí)行并收集有關(guān)該事件的數(shù)據(jù)。特別地,程序代碼部分被標(biāo)識為不響應(yīng),且系統(tǒng)狀態(tài)信息被存儲以在診斷計算機(jī)程序和糾正不響應(yīng)行為時使用。為了捕捉計時器終止時而不是程序部分完成執(zhí)行時的系統(tǒng)狀態(tài),可存儲計時器終止時或終止左右時的系統(tǒng)狀態(tài)信息??刹粩嗍占倭繑?shù)據(jù),并可在特定性能問題需要進(jìn)一步的調(diào)查時收集更多信息。
      根據(jù)本發(fā)明一方面,可執(zhí)行處理以確保計時器終止實際上是由要在閾值時間內(nèi)完成執(zhí)行的程序代碼部分的失敗導(dǎo)致的,而不是由另一原因?qū)е?。例如,如果程序代碼部分從主存儲器交換到備份存儲器,則即使程序代碼部分尚未執(zhí)行到閾值時間段也可終止計時器。類似地,模式對話框的出現(xiàn)可導(dǎo)致代碼部分不執(zhí)行以及使計時器終止。為了防止這些情形導(dǎo)致計時器終止,確定實際花在執(zhí)行計算機(jī)程序的時間量是否少于與計時器相關(guān)聯(lián)的閾值。如果執(zhí)行時間少于閾值,則可重新設(shè)置計時器的時間量等于計時器閾值減去實際花在執(zhí)行程序代碼部分的時間量。然后恢復(fù)程序代碼部分的執(zhí)行。
      根據(jù)本發(fā)明其它方面,可用嵌套方式將計時器插入程序代碼部分。這樣,計時器可具有父或子計時器。為防止一個計時器的終止導(dǎo)致其父或子計時器的終止,在一實施例中,每個計時器可操作以在終止時通知其父或子計時器從而不造成該父或子計時器的偽終止。更具體地,子計時器可向父計時器通知子計時器所花的時間量,從而父計時器可從父計時器所化的時間總量中減去該時間。例如,如果父計時器具有花5秒進(jìn)行處理的子計時器,且父計時器總共花了10秒,則將產(chǎn)生兩個警報。一個警報在5秒時對子計時器產(chǎn)生。另一個警報將對父計時器產(chǎn)生,因為在減去子計時器所花時間之后父計時器仍然花了5秒。相反,如果父計時器總共僅花了5.5秒,則僅對子計時器而不對父計時器產(chǎn)生警報(假設(shè)一秒的計時器閾值)。
      根據(jù)本發(fā)明另一實施例,可利用可操作來分配限量計時器的時間池。為了維護(hù)足夠的性能水平,時間池可響應(yīng)分配計時器的請求,并僅允許當(dāng)計時器在池中存在時分配計時器。當(dāng)已完成計時器的使用時,可將計時器返回到池中。
      參閱以下詳細(xì)描述和附圖,表征本發(fā)明的這些和各個其它特征、以及優(yōu)點將顯而易見。


      圖1是示出用來體現(xiàn)本發(fā)明各方面的計算機(jī)網(wǎng)絡(luò)各方面的網(wǎng)絡(luò)圖;圖2是示出在本發(fā)明各實施例中使用并由其提供的計算機(jī)系統(tǒng)的計算機(jī)系統(tǒng)體系結(jié)構(gòu)圖;圖3是根據(jù)本發(fā)明各實施例示出用于將工作(assert)計時器添加到各個計算機(jī)程序部分的過程的程序代碼框圖;圖4和5是示出在本發(fā)明各實施例中使用并由其提供的用于標(biāo)識計算機(jī)程序的不響應(yīng)部分的過程的流程圖。
      具體實施例方式
      現(xiàn)在參看附圖,其中相同標(biāo)號表示相同元件,將描述本發(fā)明各方面。圖1和相應(yīng)討論旨在提供一種本發(fā)明各實施例可在其中實現(xiàn)的適當(dāng)計算環(huán)境的簡要一般描述。盡管本發(fā)明將在結(jié)合運(yùn)行于個人計算機(jī)操作系統(tǒng)上的應(yīng)用程序執(zhí)行的程序模塊的一般上下文中進(jìn)行說明,本領(lǐng)域技術(shù)人員將理解本發(fā)明也可結(jié)合其它類型的計算機(jī)系統(tǒng)和程序模塊實現(xiàn)。
      通常,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)、以及其它類型的結(jié)構(gòu)。此外,本領(lǐng)域技術(shù)人員將理解本發(fā)明可在其它計算機(jī)系統(tǒng)配置中實踐,包括手持式裝置、多處理器系統(tǒng)、基于微處理器的或可編程的電器消費(fèi)品、小型計算機(jī)、大型計算機(jī)等等。本發(fā)明還可在任務(wù)由經(jīng)通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理裝置執(zhí)行的分布式計算環(huán)境中實踐。在分布式計算環(huán)境中,程序模塊可被置于本地和遠(yuǎn)程存儲器存儲設(shè)備中?,F(xiàn)在參看附圖,其中若干附圖中相同標(biāo)號表示相同元件,將描述本發(fā)明各方面和示例性操作環(huán)境。
      圖1示出用于本發(fā)明各實施例的說明性操作環(huán)境。如圖1所示,客戶計算機(jī)2在本發(fā)明各實施例中使用。客戶計算機(jī)包括可用來執(zhí)行一個或多個程序模塊的標(biāo)準(zhǔn)桌面或服務(wù)器計算機(jī)。客戶計算機(jī)2還可裝備有用于監(jiān)視在客戶計算機(jī)2上執(zhí)行的應(yīng)用程序的性能以及用于確定應(yīng)用程序的響應(yīng)的程序模塊。如在以下將要詳細(xì)描述的,客戶計算機(jī)2可操作以執(zhí)行用于標(biāo)識使應(yīng)用程序變得不響應(yīng)的應(yīng)用程序代碼部分的代碼。不響應(yīng)的計算機(jī)程序包括在執(zhí)行處理時不接收用戶輸入或不更新顯示屏的程序。
      為了標(biāo)識不響應(yīng)的程序并糾正不響應(yīng)行為,客戶計算機(jī)2可與出錯報告服務(wù)器(“ERS”)計算機(jī)10通過接口相連。出錯報告服務(wù)器計算機(jī)10包括維護(hù)并通過LAN 4或因特網(wǎng)8可訪問的常規(guī)服務(wù)器計算機(jī)。ERS 10通常由應(yīng)用程序軟件的開發(fā)者操作來監(jiān)視響應(yīng)??蛻粲嬎銠C(jī)10可操作以在已標(biāo)識包含不響應(yīng)程序代碼的程序時或在已遇到其它類型的出錯條件時向ERS 10報告。通過報告給ERS 10的信息,開發(fā)者可更改程序代碼以消除不響應(yīng)程序狀態(tài)或校正其它程序缺陷。已更改的程序代碼可在下一次更新時傳送給終端用戶。
      為幫助不響應(yīng)程序代碼的標(biāo)識,客戶計算機(jī)2可周期性地接收來自ERS 10的遠(yuǎn)程控制文件。遠(yuǎn)程控制文件包含定義應(yīng)被記錄的失敗的條件的信息。特別地,遠(yuǎn)程控制文件可包括用于確定程序是否不響應(yīng)的時間閾值。遠(yuǎn)程控制文件還可包含當(dāng)程序的一部分被標(biāo)識為不響應(yīng)時是否應(yīng)收集系統(tǒng)信息以及應(yīng)收集的信息類型的信息。有關(guān)遠(yuǎn)程控制文件的內(nèi)容和使用的其它細(xì)節(jié)將在下面提供。
      現(xiàn)在參看圖2,將描述用于客戶計算機(jī)2的說明性計算機(jī)體系結(jié)構(gòu)。圖2中所示的計算機(jī)體系結(jié)構(gòu)示出常規(guī)的臺式或膝上型計算機(jī),包括中央處理單元5(“CPU”)、包括隨機(jī)存取存儲器9(“RAM”)和只讀存儲器(“ROM”)11的系統(tǒng)存儲器7、以及將存儲器耦合到CPU 5的系統(tǒng)總線12。包含有助于如起動時在計算機(jī)元件間傳送信息的基本例程的基本輸入/輸出系統(tǒng)(BIOS)存儲在ROM 11中。計算機(jī)2還包括用于存儲操作系統(tǒng)16、應(yīng)用程序18和其它程序模塊的大容量存儲裝置14,該大容量存儲裝置將在下面進(jìn)行更詳細(xì)的描述。
      大容量存儲裝置14通過連接到總線12的大容量存儲控制器(未示出)連接到CPU 5。大容量存儲裝置14及其相關(guān)聯(lián)計算機(jī)可讀介質(zhì)提供計算機(jī)2的非易失性存儲。盡管包含在此的計算機(jī)可讀介質(zhì)的描述指向諸如硬盤或CD-ROM的大容量存儲裝置,本領(lǐng)域技術(shù)人員應(yīng)理解計算機(jī)可讀介質(zhì)可以是計算機(jī)2能訪問的任何可用介質(zhì)。
      作為示例而非限制,計算機(jī)可讀介質(zhì)可包括計算機(jī)存儲介質(zhì)和通信介質(zhì)。計算機(jī)存儲介質(zhì)包括以任何方法或技術(shù)實現(xiàn)、用于存儲諸如計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的易失性和非易失性介質(zhì)、可移動和不可移動介質(zhì)。計算機(jī)存儲介質(zhì)包括但不限于RAM、ROM、EPROM、EEPROM、閃存或其它固態(tài)存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(“DVD”)或其它光學(xué)存儲技術(shù)、磁盒、磁帶、磁盤存儲器或其它磁性存儲設(shè)備、或任何其它可用于存儲所需信息并可由計算機(jī)2訪問的介質(zhì)。
      根據(jù)本發(fā)明各實施例,計算機(jī)2可使用通過諸如因特網(wǎng)的網(wǎng)絡(luò)8與遠(yuǎn)程計算機(jī)的邏輯連接在網(wǎng)絡(luò)化環(huán)境中操作??蛻粲嬎銠C(jī)2可通過與總線12連接的網(wǎng)絡(luò)接口單元20與網(wǎng)絡(luò)8相連。應(yīng)理解,網(wǎng)絡(luò)接口單元20也可被用于與其它類型的網(wǎng)絡(luò)和遠(yuǎn)程計算機(jī)系統(tǒng)相連。計算機(jī)2還可包括輸入/輸出控制器22,用于接收和處理來自包括鍵盤、鼠標(biāo)或電子筆(未在圖1中示出)的眾多其它裝置的輸入。類似地,輸入/輸出控制器22可提供對顯示屏、打印機(jī)、或其它類型輸出裝置的輸出。
      如上簡述,眾多程序模塊和數(shù)據(jù)文件可被存儲于計算機(jī)2的大容量存儲裝置14和RAM 9中,包括適于控制網(wǎng)絡(luò)化個人計算機(jī)的操作系統(tǒng)16,諸如來自華盛頓州Redmond微軟公司的Windows XP操作系統(tǒng)。大容量存儲裝置14和RAM 9還可存儲一個或多個程序模塊。特別地,大容量存儲裝置14和RAM 9可存儲一個或多個應(yīng)用程序18。大容量存儲裝置14和RAM 9還可存儲應(yīng)用程序性能監(jiān)視器應(yīng)用程序24。如在此更詳細(xì)描述地,應(yīng)用程序性能監(jiān)視器24可操作來監(jiān)視應(yīng)用程序的操作并確定應(yīng)用程序的各部分是否未響應(yīng)。如果應(yīng)用程序不響應(yīng),則應(yīng)用程序性能監(jiān)視器還可操作以存儲用于診斷并糾正不響應(yīng)行為的系統(tǒng)狀態(tài)信息。系統(tǒng)狀態(tài)信息可傳送給ERS 10以由應(yīng)用程序的開發(fā)者使用。
      大容量存儲裝置14和RAM 9還可存儲遠(yuǎn)程控制文件26。遠(yuǎn)程控制文件26的內(nèi)容可周期性地更新并從ERS 10傳送給客戶計算機(jī)2。如上簡述,遠(yuǎn)程控制文件可存儲定義應(yīng)記錄失敗的條件的數(shù)據(jù),。特別地,遠(yuǎn)程控制文件可包括用于確定程序是否不響應(yīng)的時間閾值。遠(yuǎn)程控制文件還可包含當(dāng)程序的一部分被標(biāo)識為不響應(yīng)時是否應(yīng)收集系統(tǒng)信息以及應(yīng)收集的信息類型的信息。應(yīng)理解,遠(yuǎn)程控制文件36可存儲其它數(shù)據(jù)并可用來以其它方法控制客戶計算機(jī)2的操作。有關(guān)遠(yuǎn)程控制文件的內(nèi)容和使用的更多信息可在共同待批的申請?zhí)枮?0/304,282題為“Methodand System for Remotely Controlling the Reporting of Events Occurring withinComputer System”(“用于遠(yuǎn)程控制發(fā)生在計算機(jī)系統(tǒng)內(nèi)的事件的報告的方法和系統(tǒng)”)的美國專利申請中找到。有關(guān)應(yīng)用程序性能監(jiān)視器24的操作的其它細(xì)節(jié)將參照圖3-5在下面提供。
      現(xiàn)在參看圖3,將描述用于將工作計時器添加到各個計算機(jī)程序部分的過程的程序代碼圖。如圖3所示,計算機(jī)程序部分40可包括各個程序代碼部分。例如,如圖3所示,該部分40由程序代碼部分46A-46D組成。這些部分可包括各個例程、子例程、函數(shù)、線程、進(jìn)程或程序代碼的任意部分。
      為了確定各個程序代碼部分的響應(yīng),用于創(chuàng)建和撤消計時器(在此也稱為“工作計時器”)被插入程序代碼。例如,如圖3所示,工作計時器構(gòu)造函數(shù)48A已插入程序代碼。構(gòu)造函數(shù)48A創(chuàng)建并開啟該計時器。如以下詳細(xì)描述的,背景進(jìn)程監(jiān)視該計時器并確定與該計時器相關(guān)聯(lián)的閾值時段是否已經(jīng)到期。如果計時器在程序代碼的執(zhí)行到達(dá)與構(gòu)造函數(shù)48A相關(guān)聯(lián)的工作計時器析構(gòu)函數(shù)50A之前到期,則背景線程將捕捉計時器的終止并可收集有助于確定程序代碼為什么未在計時器終止之前完成的系統(tǒng)狀態(tài)信息。如果程序代碼的執(zhí)行在計時器終止之前到達(dá)析構(gòu)函數(shù)50A,則析構(gòu)函數(shù)50A釋放計時器。
      如圖3所示,計時器可用嵌套方式插入程序代碼的一部分。例如,如圖3所示,通過使用構(gòu)造函數(shù)48A和析構(gòu)函數(shù)50B可將第一計時器置于程序代碼部分44周圍。第二計時器通過使用構(gòu)造函數(shù)48B和析構(gòu)函數(shù)50A置于部分42周圍。由于第一計時器完全包括第二計時器,所以第一計時器可視為第二計時器的“父”計時器。類似地,第二計時器可視為第一計時器的“子”計時器。如以下將要詳細(xì)描述的,為了防止一個計時器的終止導(dǎo)致其父或子定時器的終止,每個計時器可操作以在它終止時通知其父或子定時器。終止的計時器可提供作為超過閾值的所花時間量的指示。然后獲得通知的計時器可從其閾值中減去該時間量從而不造成父或子計時器終止的偽終止。
      現(xiàn)在參看圖4,將描述示出用于標(biāo)識計算機(jī)程序的不響應(yīng)部分而執(zhí)行的過程的說明性例程400。當(dāng)閱讀在此呈現(xiàn)的對各例程的討論時,應(yīng)理解本發(fā)明的各個實施例的邏輯操作被實現(xiàn)為(1)在計算系統(tǒng)上運(yùn)行的計算機(jī)實現(xiàn)動作或程序模塊的一序列和/或(2)計算系統(tǒng)內(nèi)的相互連接的機(jī)器邏輯電路或電路模塊。實現(xiàn)是依賴于實現(xiàn)本發(fā)明的計算系統(tǒng)的性能要求的選擇。因此,在圖4-5中示出并組成在此所述的本發(fā)明各實施例的邏輯操作被分別稱為操作、結(jié)構(gòu)化裝置、動作和模塊。本領(lǐng)域技術(shù)人員將認(rèn)識到,可用軟件、固件、專用數(shù)字邏輯、及其任意組合實現(xiàn)這些操作、結(jié)構(gòu)化裝置、動作以及模塊,而不背離如所述權(quán)利要求中陳述的本發(fā)明的精神和范圍。
      例程400從操作420開始,其中執(zhí)行眾多初始化步驟。特別地,在步驟422,創(chuàng)建一工作計時器背景線程。工作背景線程可操作以捕捉計時器的終止并響應(yīng)于計時器的終止執(zhí)行某些處理。因此,工作計時器背景線程在操作428初始化并從操作430開始等待。如果計時器終止,則工作計時器背景線程繼續(xù)代操作432,其中處理計時器的終止。用于處理計時器的終止的說明性例程500將參照圖5描述。從操作434,工作計時器背景線程移到操作434,其中等待循環(huán)結(jié)束。
      工作計時器池也可在操作424初始化。工作計時器池28(“池”)包括被授權(quán)將有限數(shù)量的計時器30A-30H之一分配給調(diào)用對象的對象。如果在該池中有計時器可用,則它將被分配給調(diào)用對象。如果沒有計時器可用,則不進(jìn)行分配。通過僅分配有限數(shù)量的計時器,可降低并發(fā)分配大量計時器對性能的可能影響。應(yīng)理解,可在構(gòu)造計時器時從池中分配計時器,而在析構(gòu)計時器時將其返回到該池中。
      對其監(jiān)測響應(yīng)并已用計時器編碼的程序的執(zhí)行如操作402-418所示。特別地,在操作402,遇到并執(zhí)行工作計時器的構(gòu)造函數(shù)。為了配置該計時器,可傳遞若干參數(shù)。特別地,可傳遞唯一標(biāo)識特定計時器的工作標(biāo)記標(biāo)識符。還可傳遞計時器類型參數(shù),該參數(shù)確定對計時器進(jìn)行的定時類型以及與其相關(guān)聯(lián)的缺省閾值時間。特別地,可指定進(jìn)程定時,其中時間相對進(jìn)程執(zhí)行時間。或者,可指定線程定時,其中時間相對調(diào)用線程的執(zhí)行時間。
      一旦已構(gòu)建計時器,例程400繼續(xù)到操作404,其中可對重新設(shè)置計時器方法作另一調(diào)用,以真正返回運(yùn)行的工作計時器對象。運(yùn)行的工作計時器對象可檢查遠(yuǎn)程控制文件以確定是否應(yīng)在操作436利用不同的閾值。在執(zhí)行期間,如果在調(diào)用和處理析構(gòu)函數(shù)之前已達(dá)閾值時間,則運(yùn)行的工作計時器對象可操作以調(diào)用帶有警報的工作計時器背景線程。該過程在操作440上示出。
      一旦計時器從操作404上開始運(yùn)行,例程400繼續(xù)到操作406,其中執(zhí)行要測試響應(yīng)的程序代碼部分。如果計時器在操作406處定時的代碼部分的執(zhí)行完成之前終止,則該計時器調(diào)用工作計時器背景線程,且發(fā)生如下參照圖5所述的處理。否則,例程400繼續(xù)到操作408,其中處理析構(gòu)函數(shù)32。特別地,在操作408處計時器被釋放回工作計時器池28。
      從操作408,例程400繼續(xù)到操作410,其中確定計時器是否已發(fā)出指示已達(dá)閾值時間的警報。如果已經(jīng)發(fā)出警報,則例程400分支到操作416,其中使工作計時器進(jìn)入調(diào)試模式。通常這僅對應(yīng)用程序的開發(fā)者進(jìn)行,從而他們可得到通知這種情況已發(fā)生。
      如果在操作410確定未發(fā)出警報,則例程400繼續(xù)到操作412,其中確定計時器是否已終止。如果計時器已終止,則例程400分支到操作418,其中例程結(jié)束且應(yīng)用程序的執(zhí)行繼續(xù)。如果在操作412確定計時器已終止,則例程400繼續(xù)到操作414,其中工作計時器的終止用以下參照圖5所述的方式來處理。例如如果計時器已終止但背景線程還未有機(jī)會處理計時器的終止,這種情形會發(fā)生。這樣,析構(gòu)函數(shù)啟動如下參照圖5所述的用于處理已終止計時器的過程。從操作414,例程400繼續(xù)到操作416,其中如上所述使工作計時器進(jìn)入調(diào)試模式。然后例程400繼續(xù)到操作418,其中它結(jié)束且應(yīng)用程序的執(zhí)行繼續(xù)。
      現(xiàn)在參看圖5,將描述用于處理計時器的終止的說明性例程500。例程500在操作502開始,其中確定所監(jiān)視的程序部分的實際執(zhí)行時間是否確實小于與該計時器相關(guān)聯(lián)的閾值。執(zhí)行該計算是為了確保計時器的終止實際上是由要在閾值時間內(nèi)完成執(zhí)行的程序代碼部分的失敗引起的,而非另一原因所導(dǎo)致。例如,如果程序代碼部分從主存儲器交換到備份存儲器,則即使程序代碼部分并未執(zhí)行到閾值時間段,計時器仍然可終止。類似地,模式對話框的出現(xiàn)可導(dǎo)致代碼部分不執(zhí)行且計時器終止。為了防止這些導(dǎo)致計時器終止的情形,在操作502確定實際花在執(zhí)行計算機(jī)程序上的時間量小于與該計時器相關(guān)聯(lián)的閾值。此外,可確定模式對話框是否已向用戶顯示并正在等待輸入。如果模式對話框出現(xiàn),可從執(zhí)行時間中減去等待用戶關(guān)閉該對話框的時間。這是因為這樣的事實盡管對話框并不妨礙代碼的執(zhí)行,但在顯示對話框時應(yīng)用程序在等待用戶,且應(yīng)略去等待用戶的執(zhí)行時間。
      如果在操作502確定執(zhí)行時間大于閾值,則例程500分支到操作504。在操作504,確定與計時器相關(guān)聯(lián)的析構(gòu)函數(shù)目前是否在執(zhí)行。如果析構(gòu)函數(shù)現(xiàn)在在執(zhí)行,則例程500分支到操作520,其中將計時器返回到池28。如果析構(gòu)函數(shù)不在執(zhí)行,則例程500繼續(xù)到操作506,其中計時器的閾值重新設(shè)置到一時間量,該時間量等于計時器的閾值減去實際執(zhí)行程序代碼部分所花的時間量。然后程序代碼部分的執(zhí)行在操作508處恢復(fù)。
      如果在操作502確定執(zhí)行時間小于閾值,則例程500分支到操作510,其中確定是否應(yīng)收集存儲器信息轉(zhuǎn)儲以幫助診斷導(dǎo)致不響應(yīng)狀態(tài)的程序代碼。是否應(yīng)收集信息轉(zhuǎn)儲以及(如果應(yīng)收集的話)要收集的信息轉(zhuǎn)儲類型可在遠(yuǎn)程控制文件26中指定。例如,在許多情形中當(dāng)計時器終止時僅需收集少量的信息,諸如事件的ID和非?;镜南到y(tǒng)信息。這就使得能快速確定關(guān)于哪些事件正以高頻度發(fā)生。當(dāng)事件需要進(jìn)一步的調(diào)查時,可將遠(yuǎn)程控制文件26的內(nèi)容定義成導(dǎo)致要收集特定失敗情形的全部存儲器信息轉(zhuǎn)儲。這樣,在輕量級和重量級報告之間切換就很容易了。還應(yīng)理解,因為計時器在閾值到期之后立即終止,所以信息轉(zhuǎn)儲在終止時間時或左右時間收集,而不是在所監(jiān)視的程序代碼部分已完成其執(zhí)行時。
      如果不用收集信息轉(zhuǎn)儲,則例程500從操作512分支到操作514。如果要收集信息轉(zhuǎn)儲,則例程500繼續(xù)到操作512,其中收集存儲器信息轉(zhuǎn)儲。然后例程500繼續(xù)到操作514,其中更新用來更新遠(yuǎn)程控制文件26的內(nèi)容的信息。從操作514,例程繼續(xù)到操作516,其中設(shè)置指示已經(jīng)收集存儲器信息轉(zhuǎn)儲的標(biāo)記。
      從操作516,例程500繼續(xù)到操作518,其中以上述方式向已終止計時器的父和子計時器通知終止。然后例程繼續(xù)到操作520,其中將計時器返回到工作計時器池28。然后例程500繼續(xù)到操作522,其中例程結(jié)束。
      基于前述內(nèi)容,應(yīng)理解本發(fā)明各個實施例包括用于標(biāo)識計算機(jī)程序的不響應(yīng)部分的方法、系統(tǒng)、裝置和計算機(jī)可讀介質(zhì)。以上說明書、示例和數(shù)據(jù)提供了對本發(fā)明組成的制造和使用的完整描述。因為可作出本發(fā)明的許多實施例而不背離本發(fā)明的精神和范圍,本發(fā)明駐留于所附權(quán)利要求中。
      權(quán)利要求
      1.一種用于標(biāo)識計算機(jī)程序的不響應(yīng)部分的方法,其特征在于,所述方法包括在開始執(zhí)行所述計算機(jī)程序部分時開啟計時器;確定所述計時器是否在所述計算機(jī)程序部分的執(zhí)行期間終止;以及響應(yīng)于所述計時器在所述計算機(jī)程序部分的執(zhí)行期間的終止,將所述計算機(jī)程序部分標(biāo)識為不響應(yīng),并存儲系統(tǒng)狀態(tài)信息以用于診斷所述計算機(jī)程序。
      2.如權(quán)利要求1所述的方法,其特征在于,所述系統(tǒng)狀態(tài)信息在所述定時器終止時或在其左右時間被存儲。
      3.如權(quán)利要求2所述的方法,其特征在于,還包括在將所述計算機(jī)程序部分標(biāo)識為不響應(yīng)并存儲系統(tǒng)狀態(tài)信息之前確定花在執(zhí)行所述計算機(jī)程序部分的時間量是否少于與所述計時器相關(guān)聯(lián)的閾值;以及響應(yīng)于確定執(zhí)行所述計算機(jī)程序部分所花的時間少于閾值,將所述計時器重新設(shè)置為在等于所述閾值減去花在執(zhí)行所述計算機(jī)程序的時間量的時間到期之后終止。
      4.如權(quán)利要求2所述的方法,其特征在于,還包括在將所述計算機(jī)程序部分標(biāo)識為不響應(yīng)并存儲系統(tǒng)狀態(tài)信息之前確定在所述計算機(jī)程序部分的執(zhí)行期間是否顯示了模式對話框;以及響應(yīng)于確定顯示了模式對話框,將所述計時器重新設(shè)置為在等于所述閾值減去花在顯示所述模式對話框的時間量的時間到期之后終止。
      5.如權(quán)利要求2所述的方法,其特征在于,所述計時器具有一個或多個父計時器,且其中所述方法還包括響應(yīng)于確定所述計時器已在所述計算機(jī)程序部分的執(zhí)行期間終止而向所述父計時器通知所述終止。
      6.如權(quán)利要求5所述的方法,其特征在于,所述計時器具有一個或多個子計時器,且其中所述方法還包括響應(yīng)于確定所述計時器已在所述計算機(jī)程序部分的執(zhí)行期間終止而向所述子計時器通知所述終止。
      7.如權(quán)利要求6所述的方法,其特征在于,還包括從被授權(quán)分配有限數(shù)目計時器的計時器池中獲取所述計時器。
      8.如權(quán)利要求1所述的方法,其特征在于,被存儲用于在診斷所述計算機(jī)程序中使用的系統(tǒng)狀態(tài)信息是基于遠(yuǎn)程控制文件的內(nèi)容。
      9.如權(quán)利要求8所述的方法,其特征在于,所述遠(yuǎn)程控制文件定義是否應(yīng)執(zhí)行最少的數(shù)據(jù)收集或全部的存儲器信息轉(zhuǎn)儲。
      10.一種用于標(biāo)識計算機(jī)程序的不響應(yīng)部分的方法,其特征在于,所述方法包括在要測試響應(yīng)的所述計算機(jī)程序部分前面插入工作計時器構(gòu)造函數(shù);在要測試響應(yīng)的所述計算機(jī)程序部分后面插入工作計時器析構(gòu)函數(shù);執(zhí)行所述構(gòu)造函數(shù)來一獲取計時器;實例化所述計時器;開始執(zhí)行要測試響應(yīng)的所述計算機(jī)程序部分;確定所述計時器是否在完成所述計算機(jī)程序部分的執(zhí)行之前終止;執(zhí)行所述析構(gòu)函數(shù)來釋放所述計時器;以及響應(yīng)于確定所述計時器在完成所述計算機(jī)程序部分的執(zhí)行之前終止,將所述計算機(jī)程序部分標(biāo)識為不響應(yīng),并存儲在診斷所述計算機(jī)程序中使用的系統(tǒng)狀態(tài)信息。
      11.如權(quán)利要求10所述的方法,其特征在于,所述系統(tǒng)狀態(tài)信息在所述定時器終止時或在其左右時間被存儲。
      12.如權(quán)利要求10所述的方法,其特征在于,還包括響應(yīng)于確定所述計時器未終止,執(zhí)行所述析構(gòu)函數(shù)來釋放所述計時器并繼續(xù)執(zhí)行所述計算機(jī)程序。
      13.如權(quán)利要求10所述的方法,其特征在于,還包括在執(zhí)行所述構(gòu)造函數(shù)獲取計時器之前,初始化被授權(quán)分配有限數(shù)目的計時器的計時器池,并啟動工作計時器線程,用于監(jiān)視從所述池分配的計時器是否已終止并用來響應(yīng)于確定計時器已終止而調(diào)用終止例程。
      14.如權(quán)利要求13所述的方法,其特征在于,獲取計時器包括從所述事件計時器池中獲取一計時器。
      15.如權(quán)利要求14所述的方法,其特征在于,還包括在將所述計算機(jī)程序部分標(biāo)識為不響應(yīng)并存儲系統(tǒng)狀態(tài)信息之前確定花在執(zhí)行所述計算機(jī)程序部分的時間量是否少于與所述計時器相關(guān)聯(lián)的閾值;以及響應(yīng)于確定執(zhí)行所述計算機(jī)程序部分所花的時間少于閾值,將所述計時器重新設(shè)置為在等于所述閾值減去花在執(zhí)行所述計算機(jī)程序的時間量的時間到期之后終止。
      16.如權(quán)利要求15所述的方法,其特征在于,所述計時器具有一個或多個父計時器,且其中所述方法還包括響應(yīng)于確定所述計時器已在所述計算機(jī)程序部分的執(zhí)行期間終止向所述父計時器通知所述終止。
      17.如權(quán)利要求16所述的方法,其特征在于,所述計時器具有一個或多個子計時器,且其中所述方法還包括響應(yīng)于確定所述計時器已在所述計算機(jī)程序部分的執(zhí)行期間終止向所述子計時器通知所述終止。
      18.一種具有存儲其上的計算機(jī)可執(zhí)行指令的計算機(jī)可讀介質(zhì),其特征在于,所述計算機(jī)可執(zhí)行指令在由計算機(jī)執(zhí)行時使所述計算機(jī)初始化工作計時器池,使其可操作以分配有限數(shù)目的可等待計時器;初始化工作計時器線程,使其可操作以在背景線程上監(jiān)視一個或多個工作計時器的操作,并響應(yīng)于確定工作計時器已終止而調(diào)用工作計時器終止例程;調(diào)用工作計時器構(gòu)造函數(shù)以從所述工作計時器池中獲取一工作計時器,并重新設(shè)置所述工作計時器開始其執(zhí)行;執(zhí)行所述計算機(jī)程序內(nèi)的程序代碼;通過所述工作計時器線程確定所述工作計時器是否已在所述程序代碼執(zhí)行期間終止;以及響應(yīng)于確定所述工作計時器已在所述程序代碼的執(zhí)行期間終止而調(diào)用所述工作計時器終止例程。
      19.如權(quán)利要求18所述的計算機(jī)可讀介質(zhì),其特征在于,所述工作計時器終止例程的執(zhí)行包括確定花在執(zhí)行所述計算機(jī)程序部分的時間量是否少于與所述計時器相關(guān)聯(lián)的閾值;以及響應(yīng)于確定執(zhí)行所述計算機(jī)程序部分所花的時間少于閾值,將所述計時器重新設(shè)置為在等于所述閾值減去花在執(zhí)行所述計算機(jī)程序的時間量的時間到期之后終止。
      20.如權(quán)利要求19所述的計算機(jī)可讀介質(zhì),其特征在于,所述工作計時器終止例程的執(zhí)行還包括響應(yīng)于確定執(zhí)行所述計算機(jī)程序部分所花的時間不少于閾值,將所述程序代碼標(biāo)識為不響應(yīng),并存儲系統(tǒng)狀態(tài)信息以在診斷所述計算機(jī)程序中使用。
      21.如權(quán)利要求20所述的計算機(jī)可讀介質(zhì),其特征在于,所述工作計時器終止例程的執(zhí)行還包括將所述已分配的工作計時器返回到所述工作計時器池。
      全文摘要
      提供了用于標(biāo)識計算機(jī)程序的不響應(yīng)部分的一種方法、系統(tǒng)和裝置。根據(jù)該方法,可潛在地導(dǎo)致不響應(yīng)行為的程序代碼被封裝在計時器中。計時器在程序代碼部分開始執(zhí)行時就在背景線程上開啟。該計時器設(shè)置為在指定閾值時間段期滿后終止。確定計時器是否在程序代碼部分的執(zhí)行期間終止。如果計時器在程序代碼部分的執(zhí)行期間終止,中斷執(zhí)行并將程序代碼部分標(biāo)識為不響應(yīng),且系統(tǒng)狀態(tài)信息被存儲以在診斷計算機(jī)程序和糾正不響應(yīng)行為時使用。實際存儲的系統(tǒng)狀態(tài)信息可由遠(yuǎn)程控制文件定義并可在計時器終止時或在其時間左右被存儲。
      文檔編號G06F11/36GK1755648SQ20051009965
      公開日2006年4月5日 申請日期2005年8月30日 優(yōu)先權(quán)日2004年9月30日
      發(fā)明者B·E·康寧, C·C·懷特, T·S·庫恩 申請人:微軟公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1