最新的毛片基地免费,国产国语一级毛片,免费国产成人高清在线电影,中天堂国产日韩欧美,中国国产aa一级毛片,国产va欧美va在线观看,成人不卡在线

立即延遲跟蹤器工具的制作方法

文檔序號(hào):6377719閱讀:190來源:國知局
專利名稱:立即延遲跟蹤器工具的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及跟蹤引用中的事件的方法和系統(tǒng)。
背景技術(shù)
用戶界面使得用戶能夠與軟件應(yīng)用進(jìn)行交互。用戶界面設(shè)備可以是通過鍵盤、鼠標(biāo)、觸摸屏顯示器等來接受用戶的動(dòng)作或輸入的圖形用戶界面??梢允褂弥T如窗口、菜單、圖標(biāo)、按鈕、指針、框等對(duì)象來構(gòu)造圖形用戶界面。用戶可以使用這些對(duì)象來輸入數(shù)據(jù)、執(zhí)行命令以及一般與軟件應(yīng)用進(jìn)行交互。 對(duì)用戶動(dòng)作的慢響應(yīng)時(shí)間影響對(duì)軟件應(yīng)用的使用。響應(yīng)時(shí)間應(yīng)該盡可能的快。某些用戶動(dòng)作可能是關(guān)鍵的,并需要立即響應(yīng)。用戶動(dòng)作和應(yīng)用響應(yīng)間的延遲可給予用戶該應(yīng)用軟件沒有瞬時(shí)地反應(yīng)的感知。因此,改進(jìn)用戶界面的響應(yīng)時(shí)間增強(qiáng)了用戶對(duì)軟件應(yīng)用的整體體驗(yàn)。

發(fā)明內(nèi)容
提供本發(fā)明內(nèi)容以便以簡化形式介紹將在以下具體實(shí)施方式
中進(jìn)一步描述的一些概念。本發(fā)明內(nèi)容并不旨在標(biāo)識(shí)所要求保護(hù)主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要求保護(hù)主題的范圍。用戶通過嚴(yán)重依賴于可能需要立即響應(yīng)的用戶輸入或用戶動(dòng)作的用戶界面與諸如集成開發(fā)環(huán)境(IDE)等應(yīng)用進(jìn)行交互。這些用戶動(dòng)作經(jīng)常由管理IDE的用戶界面的用戶界面(UI)線程來處理。對(duì)用戶動(dòng)作的響應(yīng)中的延遲影響用戶對(duì)應(yīng)用的體驗(yàn)。立即延遲跟蹤器工具跟蹤n線程對(duì)在返回響應(yīng)時(shí)具有超過預(yù)期響應(yīng)時(shí)間的延遲的用戶動(dòng)作的處理。立即延遲跟蹤器工具獲取用戶定義的指示感興趣的事件、每一事件的延遲閾值和每一事件的跟蹤長度的設(shè)置文件。立即延遲跟蹤器工具監(jiān)聽超過延遲閾值的事件的發(fā)生,并隨后記錄系統(tǒng)中運(yùn)行的所有進(jìn)程和線程的控制流的系統(tǒng)范圍跟蹤達(dá)由跟蹤長度定義的時(shí)間長度。立即延遲跟蹤器工具在記錄系統(tǒng)范圍跟蹤之前等待第一次發(fā)生超過延遲閾值的事件,該事件可引起在后用戶動(dòng)作經(jīng)歷相同的延遲。通過這種方式,被記錄的數(shù)據(jù)的量被最小化。隨后可過濾并分析所記錄的數(shù)據(jù)以得到延遲的源。通過閱讀下面的詳細(xì)描述并參考相關(guān)聯(lián)的附圖,這些及其他特點(diǎn)和優(yōu)點(diǎn)將變得顯而易見。應(yīng)該理解,前面的概括說明和下面的詳細(xì)描述只是說明性的,不會(huì)對(duì)所要求保護(hù)的各方面形成限制。附圖簡述

圖1示出了用于跟蹤用戶動(dòng)作的立即延遲的示例性系統(tǒng)。圖2是示出了對(duì)具有超過延遲閾值的流逝時(shí)間的鍵盤輸入的跟蹤的流程圖。圖3是示出用于跟蹤立即延遲的第一示例性方法的流程圖。圖4A-4B是示出用于跟蹤立即延遲的第二示例性方法的流程圖。圖5是示出操作環(huán)境的框圖。
圖6是示出示例性計(jì)算設(shè)備的框圖。圖7是示出示例性服務(wù)器的框圖。
具體實(shí)施例方式各個(gè)實(shí)施例涉及用于跟蹤響應(yīng)于要求立即響應(yīng)的用戶輸入的延遲的機(jī)制。在一個(gè)或多個(gè)實(shí)施例中,可以向提供使用戶能夠構(gòu)建、測(cè)試和/或執(zhí)行軟件應(yīng)用的工具和服務(wù)的集成開發(fā)環(huán)境輸入用戶輸入。用戶通過嚴(yán)重依賴于可要求立即響應(yīng)的用戶輸入和動(dòng)作的用戶界面與IDE進(jìn)行交互。立即延遲跟蹤器工具是跟蹤在這樣的用戶動(dòng)作的響應(yīng)時(shí)間中的延遲,使得該延遲的源可被標(biāo)識(shí)出并被補(bǔ)救的機(jī)制。在一個(gè)或多個(gè)實(shí)施例中,立即延遲跟蹤器工具可跟蹤顯示從鍵盤鍵入的字符的延遲或在顯示器上打開菜單的延遲。立即用戶動(dòng)作可以是鍵盤敲擊或?qū)τ脩糨斎氲牟藛芜x項(xiàng)的點(diǎn)擊。存在處理這些事件時(shí)應(yīng)該瞬時(shí)響應(yīng)的期望。立即用戶動(dòng)作經(jīng)常由管理IDE用戶界面的UI線程來處理。用戶界面事件被表示成被存儲(chǔ)在消息隊(duì)列中直到被UI線程處理的消息。UI線程可以被實(shí)現(xiàn)為從消息隊(duì)列檢索消息并據(jù)此處理它們的消息泵或循環(huán)。UI線程的目標(biāo)是持續(xù)從消息隊(duì)列中檢索消息,該消息在本領(lǐng)域中又被稱為抽取消息。通過這種方式,觸發(fā)這些消息的動(dòng)作被響應(yīng),以由此快速改進(jìn)用戶動(dòng)作的響應(yīng)時(shí)間。立即延遲跟蹤器工具獲取指示感興趣的事件、延遲閾值和跟蹤長度的設(shè)置文件。感興趣的事件可以是n線程處理的用戶動(dòng)作,諸如鍵盤敲擊、鼠標(biāo)點(diǎn)擊、打開菜單等。延遲閾值是表示用戶可容許的最大延遲的時(shí)間單位。跟蹤長度是表示在應(yīng)用超過了延遲閾值后跟蹤該應(yīng)用的時(shí)間量的時(shí)間單位。立即用戶動(dòng)作的響應(yīng)時(shí)間可以是非??焖俚?,并可花少至50毫秒。由于立即用戶動(dòng)作的快速響應(yīng)時(shí)間,立即延遲跟蹤器工具不得不以不明顯增加立即用戶動(dòng)作的響應(yīng)時(shí)間的方式來工作。因而,立即延遲跟蹤器工具在記錄系統(tǒng)范圍跟蹤前等待超過閾值的事件的發(fā)生。系統(tǒng)范圍跟蹤可包括進(jìn)程中的調(diào)用棧和/或在跟蹤期間運(yùn)行的線程。存在被連續(xù)地逐個(gè)重復(fù)的某些立即用戶動(dòng)作,諸如鍵盤敲擊和與打開菜單相關(guān)聯(lián)的動(dòng)作。如果在處理鍵盤敲擊時(shí)存在延遲,則很可能在緊跟在其后發(fā)生的在后鍵盤敲擊中經(jīng)歷相同的延遲。立即延遲跟蹤器工具在記錄系統(tǒng)范圍跟蹤之前等待這樣的用戶動(dòng)作第一次超過延遲閾值,使得該立即延遲跟蹤器工具不會(huì)阻礙不可能經(jīng)歷相同延遲的立即用戶動(dòng)作的響應(yīng)時(shí)間。被監(jiān)控的應(yīng)用(諸如IDE)可將標(biāo)識(shí)事件的執(zhí)行的開始點(diǎn)和結(jié)束點(diǎn)的標(biāo)記事件插入應(yīng)用中。標(biāo)記事件可用于在處理該事件時(shí)觸發(fā)對(duì)應(yīng)用的響應(yīng)時(shí)間的測(cè)量。因而,一事件可由諸如在該事件開始時(shí)以及在該事件結(jié)束時(shí)的兩個(gè)標(biāo)記事件來標(biāo)識(shí)。標(biāo)記事件可以是對(duì)被通知了事件的開始和結(jié)束的事件跟蹤引擎的API調(diào)用。作為響應(yīng),事件跟蹤引擎可向立即跟蹤器工具提供ETL事件通知,通過該通知該立即跟蹤器工具可確定是否發(fā)生了延遲。當(dāng)事件超過延遲閾值時(shí),隨后該立即延遲跟蹤器指令事件跟蹤引擎記錄對(duì)運(yùn)行達(dá)預(yù)定時(shí)間量的所有進(jìn)程和/或線程的系統(tǒng)范圍跟蹤。注意力現(xiàn)轉(zhuǎn)向?qū)Ω鲗?shí)施例的更詳細(xì)的討論。圖1示出了用于跟蹤立即用戶動(dòng)作中的延遲的示例性系統(tǒng)的框圖。系統(tǒng)100可包括通過網(wǎng)絡(luò)106通信地耦合的計(jì)算設(shè)備102和服務(wù)器104。計(jì)算設(shè)備102和服務(wù)器104可以是能夠執(zhí)行可編程指令的任何類型的電子設(shè)備,這些設(shè)備為諸如但不限于移動(dòng)設(shè)備、個(gè)人數(shù)字助理、移動(dòng)計(jì)算設(shè)備、智能電話、蜂窩電話、手持式計(jì)算機(jī)、服務(wù)器、服務(wù)器陣列或服務(wù)器場、web服務(wù)器、網(wǎng)絡(luò)服務(wù)器、因特網(wǎng)服務(wù)器、工作站、小型機(jī)、大型機(jī)、巨型機(jī)、網(wǎng)絡(luò)設(shè)備、web設(shè)備、分布式計(jì)算系統(tǒng)、多處理器系統(tǒng)或其組合。網(wǎng)絡(luò)106可以是能夠利用任何通信協(xié)議或按照任何配置來促進(jìn)計(jì)算設(shè)備102與服務(wù)器104之間的通信的任何類型的通信鏈接,諸如但不限于有線網(wǎng)絡(luò)、無線網(wǎng)絡(luò)或其組合。應(yīng)當(dāng)理解,所示的網(wǎng)絡(luò)連接是示例性的,并且也可使用在計(jì)算設(shè)備102和服務(wù)器104之間建立通信鏈接的其他手段。在一個(gè)或多個(gè)實(shí)施例中,計(jì)算設(shè)備102可被IDE 110的用戶利用。計(jì)算設(shè)備102可包括操作系統(tǒng)108、IDE 110和立即延遲跟蹤器工具112。操作系統(tǒng)108、IDE 110和立即延遲跟蹤器工具112可以是計(jì)算機(jī)程序指令的序列,并且當(dāng)由處理器來執(zhí)行該計(jì)算機(jī)程序指令的序列時(shí),使得處理器根據(jù)規(guī)定的任務(wù)來執(zhí)行方法和/或操作??梢詫⒉僮飨到y(tǒng)108、IDE 110和立即延遲跟蹤器工具112實(shí)現(xiàn)成程序代碼、程序、過程、模塊、代碼段、程序棧、中間件、固件、方法、例程等??蓤?zhí)行計(jì)算機(jī)程序指令可根據(jù)用于指示計(jì)算機(jī)執(zhí)行特定功能的預(yù)定義的計(jì)算機(jī)語言、方式或句法來實(shí)現(xiàn)。這些指令可以使用任何合適的高級(jí)、低級(jí)、面向?qū)ο?、可視、編譯、和/或解釋編程語言來實(shí)現(xiàn)。IDE 110是提供允許用戶構(gòu)建、測(cè)試和/或執(zhí)行軟件應(yīng)用的工具和服務(wù)的軟件應(yīng)用。微軟的 Visual Studio 、Delph1、JBuiIder、FrontPage 和 Dream Weaver 是不例性 IDE。IDE 110可包含執(zhí)行的多個(gè)線程,諸如UI線程113。在一實(shí)施例中,UI線程113可被實(shí)現(xiàn)為消息泵。消息泵從消息隊(duì)列114檢索消息,這些消息隨后被轉(zhuǎn)發(fā)給相應(yīng)的事件處理程序以供處理。消息序列可以被翻譯或聚集成事件。例如,按下鼠標(biāo)按鈕消息和移動(dòng)消息可被聚集成窗口大小調(diào)整事件。其他事件的示例可包括鍵盤輸入、時(shí)間到期等。n線程113調(diào)用與消息相關(guān)聯(lián)的事件處理程序,并在檢索另一消息之前等待該事件處理程序的執(zhí)行的完成。可通過操作系統(tǒng)108將各消息放置在消息隊(duì)列114中。從消息隊(duì)列114中檢索消息可以指抽取消息,并且用于從消息隊(duì)列114中檢索消息并轉(zhuǎn)發(fā)這些消息以供處理的機(jī)制又被稱為消息泵。UI線程113的目標(biāo)是不斷地從消息隊(duì)列114中檢索消息或不斷地抽取消息。通過這種方式,觸發(fā)這些消息的事件被響應(yīng),以由此快速改進(jìn)W線程113的性能和響應(yīng)性。當(dāng)UI線程113花費(fèi)大量時(shí)間來處理消息時(shí),該UI線程113被認(rèn)為是無響應(yīng)的。為了改進(jìn)n線程113的響應(yīng)時(shí)間,知道延遲的源是重要的。在一個(gè)或多個(gè)實(shí)施例中,立即延遲跟蹤器工具112可用于確定UI線程響應(yīng)于要求立即注意的用戶動(dòng)作的慢響應(yīng)時(shí)間。操作系統(tǒng)108管理并協(xié)調(diào)執(zhí)行IDE 110和其他程序所需的資源和服務(wù)。操作系統(tǒng)108可包括事件跟蹤引擎116和運(yùn)行時(shí)引擎118。事件跟蹤引擎116可以是用于將內(nèi)核或應(yīng)用定義的事件作為記錄到日志文件中的軟件應(yīng)用。運(yùn)行時(shí)引擎118管理受管代碼應(yīng)用的執(zhí)行。事件跟蹤引擎Il6用日志記錄或記錄屬于在操作系統(tǒng)108下運(yùn)行的應(yīng)用的執(zhí)行期間發(fā)生的各事件的數(shù)據(jù)。事件可以是操作系統(tǒng)或應(yīng)用中可能發(fā)生的任何可記錄的活動(dòng)。在一個(gè)或多個(gè)實(shí)施例中,事件跟蹤引擎116可能正在跟蹤UI線程113和/或操作系統(tǒng)108內(nèi)發(fā)生的用戶界面事件。在這個(gè)上下文中,示例性事件可以是n線程113為忙的這段時(shí)間。該事件可以被指定為從n線程113從消息隊(duì)列得到消息的時(shí)刻到n線程完成對(duì)該消息的處理時(shí)的時(shí)刻的時(shí)間??梢杂刹迦雗線程113中的可測(cè)量該延遲的合適點(diǎn)處的一對(duì)標(biāo)記事件來標(biāo)識(shí)這個(gè)事件??捎涗浀臄?shù)據(jù)包括執(zhí)行事件的線程(諸如UI線程113)的調(diào)用棧。調(diào)用棧是被配置為線程內(nèi)已執(zhí)行的過程的地址的后入先出棧的數(shù)據(jù)結(jié)構(gòu)。通過獲取線程的調(diào)用棧,IDE的用戶可能能夠跟蹤該線程的控制流以便確定延遲的源。事件跟蹤引擎116從提供方(諸如IDE 110和/或操作系統(tǒng)108)處檢索事件。IDE110和/或操作系統(tǒng)108向事件跟蹤引擎116提供與事件的發(fā)生相關(guān)聯(lián)的事件內(nèi)容。事件跟蹤引擎116接著將該事件內(nèi)容提供給事件的消費(fèi)者,諸如立即延遲跟蹤器工具112??梢砸蕴崛 ⑥D(zhuǎn)換、加載(ETL)日志文件的形式來將事件內(nèi)容提供給立即延遲跟蹤器工具112,日志文件可包括時(shí)戳、進(jìn)程和/或線程標(biāo)識(shí)符、處理器編號(hào)、CPU使用數(shù)據(jù)等。諸如立即延遲跟蹤器工具112等事件跟蹤引擎116的消費(fèi)者經(jīng)常向事件跟蹤引擎116注冊(cè)并指定事件跟蹤引擎116將提供給立即延遲跟蹤器工具112的事件。另外,立即延遲跟蹤器工具112還可指令事件跟蹤引擎116將特定事件記錄到一個(gè)或多個(gè)日志文件中。例如,與應(yīng)用有關(guān)的事件可被記錄到用戶日志文件120中,并且與操作系統(tǒng)內(nèi)核有關(guān)的事件可被記錄到內(nèi)核日志文件122中。設(shè)置文件124可用于指定要監(jiān)視的事件以及其他信息。例如,設(shè)置文件124可包括延遲閾值和跟蹤長度。延遲閾值是表示用戶可容許的最大延遲的時(shí)間單位。跟蹤長度是表示在事件超過了延遲閾值后跟蹤該事件的時(shí)間量的時(shí)間單位。在一實(shí)施例中,設(shè)置文件124可以是具有一組用于指定可跟蹤事件和相關(guān)信息的標(biāo)簽的XML文件。設(shè)置文件124可以由用戶生成,以供立即延遲跟蹤器工具112使用。運(yùn)行時(shí)引擎118管理用受管代碼寫的應(yīng)用。受管代碼是包含二進(jìn)制匯編件和元數(shù)據(jù)的文件。匯編件是以中間語言來格式化的,而元數(shù)據(jù)標(biāo)識(shí)與該匯編件相關(guān)聯(lián)的類別、方法和屬性。受管代碼在運(yùn)行時(shí)引擎118內(nèi)執(zhí)行。當(dāng)受管代碼調(diào)用一種方法時(shí),運(yùn)行時(shí)引擎118安排來使該方法被編譯成相應(yīng)的機(jī)器代碼,該機(jī)器代碼隨后被執(zhí)行。運(yùn)行時(shí)引擎118可被認(rèn)為是在用受管代碼編寫的應(yīng)用內(nèi)發(fā)生的事件的提供方。因而,運(yùn)行時(shí)引擎118可將這些事件提供給事件跟蹤引擎116,這些事件可隨后被記錄到運(yùn)行終了(rundown)跟蹤文件126或用戶日志文件120中。立即延遲跟蹤器工具112可以是根據(jù)用戶定義的設(shè)置來跟蹤影響應(yīng)用的性能的事件的響應(yīng)時(shí)間的軟件應(yīng)用。立即延遲跟蹤器工具112可包含監(jiān)聽器線程128、收集器線程130和上傳器線程132。監(jiān)聽器線程128與時(shí)間跟蹤引擎116交互以檢測(cè)超過延遲閾值的用戶定義事件的發(fā)生。收集器線程130管理對(duì)涉及事件的數(shù)據(jù)的收集,包括將收集到的數(shù)據(jù)處理成供在后面的分析中使用的格式。上傳器線程132管理將收集到的數(shù)據(jù)分配給可提供對(duì)收集到的數(shù)據(jù)的進(jìn)一步分析的其他計(jì)算設(shè)備。立即延遲跟蹤器工具112可通過API與事件跟蹤引擎116進(jìn)行交互。最初,立即延遲跟蹤器工具112通過注冊(cè)API向事件跟蹤引擎116注冊(cè)。因此,立即延遲跟蹤器工具112可以通過調(diào)用相應(yīng)的API以立即延遲跟蹤器代碼在各個(gè)點(diǎn)處與事件跟蹤引擎116進(jìn)行交互。立即延遲跟蹤器工具112可通過調(diào)用相應(yīng)的API請(qǐng)求特定事件的ETL事件通知,通過相應(yīng)的API請(qǐng)求事件跟蹤引擎116記錄跟蹤數(shù)據(jù),以及請(qǐng)求事件跟蹤引擎116將所有收集到的數(shù)據(jù)合并成合并文件134。立即延遲跟蹤器工具112可使用合并文件134中的信息來生成系統(tǒng)文件136。系統(tǒng)文件136可包含合并文件中所感興趣的延遲的列表,以及關(guān)于生成跟蹤數(shù)據(jù)的機(jī)器的附加信息。在一個(gè)或多個(gè)實(shí)施例中,可以以XML格式來配置系統(tǒng)文件136。存在跟蹤時(shí)收集到的大量數(shù)據(jù),并且立即延遲跟蹤器工具112標(biāo)識(shí)用戶感興趣的那些延遲,以便減少有待分析的數(shù)據(jù)的量。立即延遲跟蹤器工具112可掃描合并文件134,并標(biāo)識(shí)合并文件134中所感興趣的那些事件和延遲。設(shè)置文件124標(biāo)識(shí)用戶感興趣的事件和延遲。所標(biāo)識(shí)的事件和延遲被隨后列在系統(tǒng)文件136中,以使得對(duì)合并文件134中的數(shù)據(jù)的在后分析更有效。服務(wù)器104可被利用來分析包含在合并文件134和系統(tǒng)文件136中的經(jīng)跟蹤數(shù)據(jù)。服務(wù)器104可包括數(shù)據(jù)庫138以及分析和報(bào)告模塊140。數(shù)據(jù)庫138存儲(chǔ)來自一個(gè)或多個(gè)計(jì)算設(shè)備102的合并文件134,且分析和報(bào)告模塊140可用于分析合并數(shù)據(jù)并形成顯示分析結(jié)果的報(bào)告。分析結(jié)果可用于確定由事件的延遲造成的狀況。在一個(gè)或多個(gè)實(shí)施例中,數(shù)據(jù)庫138可包含來自單個(gè)合并文件134的跟蹤數(shù)據(jù),并在其他實(shí)施例中數(shù)據(jù)庫138可包含來自若干合并文件134的跟蹤數(shù)據(jù)。通過跨應(yīng)用的多個(gè)用戶聚集合并文件134,可更容易地識(shí)別出延遲的源。盡管圖1中示出的系統(tǒng)100具有按照某種配置的有限數(shù)量的元件,但應(yīng)理解,系統(tǒng)100可以在替換配置中包括更多或更少的元件。例如,服務(wù)器104可被安排成多個(gè)服務(wù)器機(jī)器,或被配置成服務(wù)器和客戶機(jī)機(jī)器的組合。還存在可在一個(gè)或多個(gè)服務(wù)器104上并發(fā)操作的若干分析和報(bào)告模塊140。雖然描述了與跟蹤IDE內(nèi)的用戶動(dòng)作有關(guān)的各實(shí)施例,但可利用除IDE以外的其他應(yīng)用,并且可跟蹤除用戶界面事件以外的其他事件。各實(shí)施例不受限于此方式。在各個(gè)實(shí)施例中,在此描述的系統(tǒng)100可包括具有多個(gè)元件、程序、過程、模塊的計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng)。如此處所使用地,這些術(shù)語旨在指代與計(jì)算機(jī)相關(guān)的實(shí)體,包括硬件、硬件和軟件的組合或軟件中的任一個(gè)。例如,元件可被實(shí)現(xiàn)為在處理器上運(yùn)行的進(jìn)程、硬盤驅(qū)動(dòng)器、多個(gè)(光和/或磁存儲(chǔ)介質(zhì)的)存儲(chǔ)驅(qū)動(dòng)器、對(duì)象、可執(zhí)行代碼、執(zhí)行的線程、程序、和/或計(jì)算機(jī)。作為說明,在' 務(wù)器上運(yùn)行的應(yīng)用和服務(wù)器兩者都可以是元件。一個(gè)或多個(gè)元件可以駐留在執(zhí)行的進(jìn)程和/或線程內(nèi),且元件可以視給定實(shí)現(xiàn)所需而位于一個(gè)計(jì)算機(jī)上和/或被分布在兩個(gè)或更多計(jì)算機(jī)之間。各實(shí)施例限于這種方式。系統(tǒng)100的各個(gè)元件可經(jīng)由各條線或箭頭所指示的各種類型的通信介質(zhì)通信地耦合。元件可以協(xié)調(diào)彼此之間的操作。該協(xié)調(diào)可以涉及單向或雙向信息交換。例如,元件可以傳遞通過通信介質(zhì)傳遞的信號(hào)形式的信息。該信息可被實(shí)現(xiàn)成分配給各條信號(hào)線的信號(hào)。在這些分配中,每一消息都是信號(hào)。然而,其他實(shí)施方式可另選地采用數(shù)據(jù)消息。這些數(shù)據(jù)消息可以跨各個(gè)連接發(fā)送。示例性連接包括并行接口、串行接口和總線接口。圖2示出跟蹤示例性事件的過程。用戶可輸入鍵盤敲擊(框146),該鍵盤敲擊被操作系統(tǒng)檢測(cè)并處理成WM_KEYD0WN消息(框148)。WM_KEYD0WN消息可包括指示檢測(cè)到鍵盤敲擊的時(shí)間的時(shí)戳以及唯一地標(biāo)識(shí)鍵盤敲擊的鍵盤掃描代碼。WM.KEYDOWN消息可隨后被張貼到UI線程的消息隊(duì)列(框148)。消息泵150處理放置在消息隊(duì)列中的消息。消息泵可以是如下各項(xiàng)的循環(huán)持續(xù)地通過獲得消息函數(shù)152來從消息隊(duì)列中檢索消息、隨后通過處理消息函數(shù)154來發(fā)起對(duì)消息的處理、以及通過等待下一個(gè)消息函數(shù)156來等待要被放置在消息隊(duì)列中的下一個(gè)消息。處理消息函數(shù)154可檢索WM_KEYDOWN消息,該消息隨后被轉(zhuǎn)換成WM_CHAR消息,該WM_CHAR消息包括指示W(wǎng)M_CHAR何時(shí)被張貼的時(shí)戳、鍵盤掃描代碼和通過鍵盤敲擊輸入的字符。所感興趣的鍵盤敲擊輸入的響應(yīng)時(shí)間可以是從設(shè)置WM_KEYD0WN中的時(shí)戳的時(shí)刻到完成處理WM_CHAR消息(這可在完成處理消息函數(shù)154時(shí)發(fā)生)時(shí)的時(shí)刻的時(shí)間。該響應(yīng)時(shí)間在圖2中被示為流逝的時(shí)間160。UI線程113中的標(biāo)記事件162可用于標(biāo)識(shí)事件的開始點(diǎn),且標(biāo)記事件164可用于標(biāo)識(shí)事件的結(jié)束點(diǎn)。如果流逝的時(shí)間160超過在設(shè)置文件124中指定的鍵盤敲擊的延遲閾值設(shè)置,則立即延遲跟蹤器工具112發(fā)起在跟蹤長度162所定義的時(shí)間段內(nèi)記錄所有系統(tǒng)范圍事件。記錄第一延遲事件之后發(fā)生的所有事件,即使在后面的用戶動(dòng)作中不存在任何延遲。在立即用戶動(dòng)作的情況下,很可能在后用戶動(dòng)作將經(jīng)歷與在前延遲相似的延遲。然而,通過等待將首先發(fā)生的延遲的發(fā)生,所記錄的數(shù)據(jù)的量被減少為更可管理的大小。另外,系統(tǒng)范圍跟蹤的記錄時(shí)間并不阻礙立即用戶動(dòng)作的響應(yīng)時(shí)間。注意力現(xiàn)轉(zhuǎn)向?qū)Ω鱾€(gè)示例性方法的更詳細(xì)的討論??蓞⒖几鱾€(gè)示例性方法進(jìn)一步描述針對(duì)各實(shí)施例的操作??梢岳斫?,除非另外指明,否則代表性的方法不一定要按所呈現(xiàn)的次序或者按任何特定次序來執(zhí)行。而且,參考這些方法描述的各種活動(dòng)可按照串行或并行的方式、或串行和并行操作的任何組合執(zhí)行。視給定的一組設(shè)計(jì)和性能約束的需要,方法可使用所述實(shí)施例或替換實(shí)施例的一個(gè)或多個(gè)硬件元件和/或軟件元件來實(shí)現(xiàn)。例如,方法可被實(shí)現(xiàn)為供邏輯設(shè)備(例如,通用或?qū)S糜?jì)算機(jī))執(zhí)行的邏輯(例如,計(jì)算機(jī)程序指令)。圖3示出了用于跟蹤n線程113中的立即動(dòng)作的延遲的示例性方法的流程圖??蓪⒘⒓囱舆t跟蹤器工具112加載到計(jì)算設(shè)備102中,并啟動(dòng)該工具使得可如設(shè)置文件124中所指定的那樣處理跟蹤(框202)。在一個(gè)或多個(gè)實(shí)施例中,可以將立即延遲跟蹤器工具112加載成插件、組件、分組等形式的IDE 110的擴(kuò)展。在激活I(lǐng)DE 110后,IDE 110向操作系統(tǒng)108注冊(cè),使得IDE 110在其自己的進(jìn)程中執(zhí)行,該進(jìn)程獨(dú)立于操作系統(tǒng)108為立即延遲跟蹤器工具112創(chuàng)建的進(jìn)程(框202)。立即延遲跟蹤器工具112開始執(zhí)行并讀入來自設(shè)置文件124的數(shù)據(jù)(框202)。設(shè)置文件124包含用戶所指定的、立即延遲跟蹤器工具112可跟蹤的事件和延遲(框202)。立即延遲跟蹤器工具112可創(chuàng)建監(jiān)聽器線程128來監(jiān)聽設(shè)置文件124中指定的事件的發(fā)生(框204)。收集器線程130可隨后被創(chuàng)建來管理對(duì)所跟蹤事件的記錄(框206)。上傳器線程132可被創(chuàng)建來將所跟蹤事件的合并文件134和系統(tǒng)文件136上傳到服務(wù)器104(框208)。隨后分析這些文件以確定每一事件的延遲(框210)。注意力現(xiàn)轉(zhuǎn)向?qū)D3所示的方法的更詳細(xì)的討論。圖4A-4B示出了用于跟蹤n線程中的立即動(dòng)作的延遲的示例性方法的流程圖。應(yīng)注意,方法300A、300B可表示由此處所述的一個(gè)或多個(gè)實(shí)施例執(zhí)行的某些或全部操作,且方法可包括比圖4A - 4B中描述的操作更多或更少的操作。參考圖4A,示出了并發(fā)執(zhí)行的IDE 110、事件跟蹤引擎116、監(jiān)聽器線程128、收集器線程130和上傳器線程132。在一個(gè)或多個(gè)實(shí)施例中,IDE 110、事件跟蹤引擎116和立即延遲跟蹤器工具中的線程128、130、132可在各單獨(dú)的進(jìn)程中并發(fā)運(yùn)行。進(jìn)程是應(yīng)用的示例,該應(yīng)用被配置為具有執(zhí)行它所需的資源。進(jìn)程可具有其自己的存儲(chǔ)器空間,該空間是與在相同進(jìn)程內(nèi)執(zhí)行的各線程共享的。相同進(jìn)程內(nèi)的各線程可經(jīng)由消息或通過共享的存儲(chǔ)器空間來通信。IDEllO在可包括UI線程113的進(jìn)程中運(yùn)行。事件跟蹤引擎116在可包括操作系統(tǒng)108的進(jìn)程中運(yùn)行。監(jiān)聽器線程128、收集器線程130和上傳器線程132可在相同進(jìn)程中運(yùn)行。監(jiān)聽器線程128可通過調(diào)用注冊(cè)API來向事件跟蹤引擎116注冊(cè),在該注冊(cè)API中監(jiān)聽器線程128指示了事件跟蹤引擎116應(yīng)跟蹤的各事件(框304)。每一事件可以與標(biāo)識(shí)該事件的事件標(biāo)識(shí)符相關(guān)聯(lián)。另外,監(jiān)聽器線程128可指定所跟蹤的數(shù)據(jù)的格式以及其他信息(框304)。在一個(gè)或多個(gè)實(shí)施例中,事件可以是通過n線程來處理的用戶動(dòng)作,并且是通過n線程中包含的標(biāo)記事件來標(biāo)識(shí)的。在這個(gè)上下文中,事件跟蹤引擎116向監(jiān)聽器線程128轉(zhuǎn)發(fā)在注冊(cè)API中以此處稱為提取、變換和加載(ETL)事件通知的格式指定的那些事件。ETL事件通知可包含事件內(nèi)容和其他信息,諸如事件何時(shí)發(fā)生的時(shí)戳、CPU使用、處理器標(biāo)識(shí)符等。監(jiān)聽器線程128分析ETL事件通知以確定與事件相關(guān)聯(lián)的執(zhí)行時(shí)間是否處在設(shè)置文件124中為該事件指定的延遲之內(nèi)(框306)。如果執(zhí)行時(shí)間處在為事件指定的延遲時(shí)間之內(nèi),則可丟棄該ETL事件通知,且監(jiān)聽器線程128等待下一個(gè)ETL事件通知(框308 —否)。如果事件的執(zhí)行時(shí)間超過為該事件指定的延遲時(shí)間(框308-是),則監(jiān)聽器線程128通知收集器線程130記錄可跟蹤事件(框310)。收集器線程130可請(qǐng)求用戶302手動(dòng)地啟動(dòng)對(duì)跟蹤事件的收集或記錄(框310)。用戶302可請(qǐng)求記錄的開始(框310)。或者,如果用戶302未在預(yù)先確定的時(shí)間內(nèi)或未以其他方式作出響應(yīng),則收集器線程130繼續(xù)至自動(dòng)地指令事件跟蹤引擎116記錄可跟蹤事件(框310)。為了完成該任務(wù),收集器線程130使用注冊(cè)API向事件跟蹤引擎116注冊(cè),該注冊(cè)API指定了要被記錄的事件(諸如對(duì)UI線程的系統(tǒng)范圍跟蹤)以及可進(jìn)行該記錄的時(shí)間長度(框312)??稍谠O(shè)置文件124中指定記錄時(shí)間(框314)。在接收到收集器線程的注冊(cè)后,事件跟蹤引擎116將n線程113中引發(fā)的事件記錄在用戶日志文件120中、將操作系統(tǒng)108的內(nèi)核中引發(fā)的事件記錄在內(nèi)核日志文件122中、并將由運(yùn)行時(shí)引擎118引發(fā)的事件記錄在運(yùn)行終了跟蹤文件126中(框314)。事件跟蹤引擎116在記錄時(shí)間的持續(xù)期間不斷向這些文件中的每一個(gè)寫入(框314)。這些日志文件中的每一個(gè)包含成千上萬個(gè)調(diào)用棧。例如,用戶日志文件120可包含與用戶進(jìn)程和線程相關(guān)聯(lián)的調(diào)用棧,內(nèi)核日志文件122可包含操作系統(tǒng)進(jìn)程和線程的調(diào)用棧,且運(yùn)行終了跟蹤文件126可包含以受管代碼實(shí)現(xiàn)的應(yīng)用的調(diào)用棧。在一些系統(tǒng)中,每毫秒可生成一調(diào)用棧,由此在四秒鐘跟蹤長度中生成大致四千個(gè)調(diào)用棧。接著,事件跟蹤引擎116通知收集器線程130記錄完成(框316)。參考圖4B,收集器線程130隨后指令事件跟蹤引擎116將用戶日志文件120、內(nèi)核日志文件122和運(yùn)行終了跟蹤文件126合并成合并文件134 (框318)。收集器線程130讀取合并文件134中用日志記錄的事件和信息,以生成列出了所感興趣的延遲的系統(tǒng)文件136。事件跟蹤引擎116將與計(jì)算設(shè)備102相關(guān)的附加數(shù)據(jù)添加到合并文件中。例如,可將每一日志文件的文件簽名寫入合并文件134中以供以后標(biāo)識(shí)符號(hào)文件時(shí)使用。對(duì)于所跟蹤的、執(zhí)行本地代碼或機(jī)器代碼的應(yīng)用,調(diào)用??砂玫刂返姆?hào)名。為了解析符號(hào)名,需要與執(zhí)行跟蹤的計(jì)算設(shè)備相對(duì)應(yīng)的符號(hào)文件。符號(hào)文件可被存儲(chǔ)于在線符號(hào)服務(wù)器中。出于這個(gè)原因,事件跟蹤引擎116將各日志文件的文件簽名寫入合并文件134中,使得正確的符號(hào)文件可在在后處理中被獲取。還可在系統(tǒng)文件136中提供其他系統(tǒng)數(shù)據(jù),諸如操作系統(tǒng)的版本、應(yīng)用的版本、唯一的會(huì)話標(biāo)識(shí)符等。收集器線程130引用指定了感興趣的延遲的設(shè)置文件124,并在合并文件134中找出相應(yīng)的延遲。這些延遲隨后被列在系統(tǒng)文件136中,以供在后面的分析使用。另外,將與執(zhí)行跟蹤的計(jì)算設(shè)備有關(guān)的信息(諸如,文件簽名、操作系統(tǒng)的版本等)寫入系統(tǒng)文件136中。然而,收集器線程130可能不需要執(zhí)行這個(gè)任務(wù),并且在一些實(shí)施例中將感興趣的延遲列在系統(tǒng)文件136中的任務(wù)是由服務(wù)器104上的聚集和報(bào)告模塊140來執(zhí)行的。注意力現(xiàn)轉(zhuǎn)向?qū)τ糜谠诖嗣枋龅母鲗?shí)施例的示例性操作環(huán)境的討論。現(xiàn)在參考圖5,示出了示例性操作環(huán)境400的示意性框圖。操作環(huán)境400可包括通過通信框架404與一個(gè)或多個(gè)服務(wù)器406通信的一個(gè)或多個(gè)客戶機(jī)402??蛻魴C(jī)402可實(shí)現(xiàn)客戶機(jī)系統(tǒng),諸如計(jì)算設(shè)備102,且服務(wù)器406可實(shí)現(xiàn)服務(wù)器104??蛻魴C(jī)402可被實(shí)現(xiàn)為硬件設(shè)備、軟件模塊或其組合。這種硬件設(shè)備的示例可包括但不限于計(jì)算機(jī)(例如,服務(wù)器、個(gè)人計(jì)算機(jī)、膝上型計(jì)算機(jī)等)、蜂窩電話、個(gè)人數(shù)字助理或任何類型的計(jì)算設(shè)備等??蛻魴C(jī)402還可被實(shí)現(xiàn)為具有在單個(gè)執(zhí)行路徑中、多個(gè)并發(fā)的執(zhí)行路徑(例如,線程、進(jìn)程等)中或以任何其他方式執(zhí)行的指令的軟件模塊。服務(wù)器406可被實(shí)現(xiàn)為硬件設(shè)備、軟件模塊或其組合。這種硬件設(shè)備的示例可包括但不限于計(jì)算機(jī)(例如,服務(wù)器、個(gè)人計(jì)算機(jī)、膝上型計(jì)算機(jī)等)、蜂窩電話、個(gè)人數(shù)字助理或任何類型的計(jì)算設(shè)備等。服務(wù)器406還可被實(shí)現(xiàn)為具有在單個(gè)執(zhí)行路徑中、多個(gè)并發(fā)的執(zhí)行路徑(例如,線程、進(jìn)程等)中或以任何其他方式執(zhí)行的指令的軟件模塊。通信框架404促進(jìn)客戶機(jī)402和服務(wù)器406間的通信。通信框架404可利用任何通信協(xié)議具體化任何類型的通信介質(zhì),諸如有線或無線網(wǎng)絡(luò)。每一客戶機(jī)402可耦合到一個(gè)或多個(gè)客戶機(jī)數(shù)據(jù)存儲(chǔ)408,該數(shù)據(jù)存儲(chǔ)408存儲(chǔ)在該客戶機(jī)402本地的信息。每一服務(wù)器406可耦合到一個(gè)或多個(gè)服務(wù)器數(shù)據(jù)存儲(chǔ)410,該數(shù)據(jù)存儲(chǔ)410存儲(chǔ)在該服務(wù)器406本地的信息。圖6示出示例性計(jì)算設(shè)備102的框圖。計(jì)算設(shè)備102可具有處理器502、顯示器504、用于促進(jìn)網(wǎng)絡(luò)通信的網(wǎng)絡(luò)接口 506、用于接受來自輸入設(shè)備的用戶輸入的用戶輸入接口 508和存儲(chǔ)器510。存儲(chǔ)器510可以是可存儲(chǔ)可執(zhí)行過程、應(yīng)用和數(shù)據(jù)的任何計(jì)算機(jī)可讀的存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀介質(zhì)不屬于傳播信號(hào),諸如通過載波發(fā)射的調(diào)制數(shù)據(jù)信號(hào)。它可以是任何類型的存儲(chǔ)器設(shè)備(例如,隨機(jī)存取存儲(chǔ)器、只讀存儲(chǔ)器等)、磁存儲(chǔ)、易失性存儲(chǔ)、非易失性存儲(chǔ)、光存儲(chǔ)、DVD、⑶、軟盤驅(qū)動(dòng)器等。存儲(chǔ)器510還可包括一個(gè)或多個(gè)外部存儲(chǔ)設(shè)備或位于遠(yuǎn)程的存儲(chǔ)設(shè)備。存儲(chǔ)器510可包含如下指令和數(shù)據(jù)具有事件跟蹤引擎116和運(yùn)行時(shí)引擎118的操作系統(tǒng)108 ;具有UI 線程 113 的 IDE 110 ;具有監(jiān)聽器線程128、收集器線程130和上傳器線程132的立即延遲跟蹤器工具112 ;
消息隊(duì)列114;設(shè)置文件124 ;內(nèi)核日志文件122;用戶日志文件120;運(yùn)行終了跟蹤文件126 ;合并文件134;系統(tǒng)文件136;以及各種其它應(yīng)用和數(shù)據(jù)512。圖7示出示例性服務(wù)器104的框圖。服務(wù)器104可具有處理器602、顯示器604、用于促進(jìn)網(wǎng)絡(luò)通信的網(wǎng)絡(luò)接口 606、用于接受來自輸入設(shè)備的用戶輸入的用戶輸入接口 608和存儲(chǔ)器610。存儲(chǔ)器610可以是可存儲(chǔ)可執(zhí)行過程、應(yīng)用和數(shù)據(jù)的任何計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀介質(zhì)不屬于傳播信號(hào),諸如通過載波發(fā)射的調(diào)制數(shù)據(jù)信號(hào)。它可以是任何類型的存儲(chǔ)器設(shè)備(例如,隨機(jī)存取存儲(chǔ)器、只讀存儲(chǔ)器等)、磁存儲(chǔ)、易失性存儲(chǔ)、非易失性存儲(chǔ)、光存儲(chǔ)、DVD、⑶、軟盤驅(qū)動(dòng)器等。存儲(chǔ)器610還可包括一個(gè)或多個(gè)外部存儲(chǔ)設(shè)備或位于遠(yuǎn)程的存儲(chǔ)設(shè)備。存儲(chǔ)器610可包含諸如以下各項(xiàng)中的一個(gè)或多個(gè)指令和數(shù)據(jù)操作系統(tǒng)612;數(shù)據(jù)庫138 ;分析和報(bào)告模塊140 ;以及其它應(yīng)用和數(shù)據(jù)612。盡管用結(jié)構(gòu)特征和/或方法動(dòng)作專用的語言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于上述具體特征或動(dòng)作。更確切而言,上述具體特征和動(dòng)作是作為實(shí)現(xiàn)權(quán)利要求的示例形式公開的。雖然已結(jié)合立即用戶動(dòng)作(諸如鍵盤敲擊和菜單點(diǎn)擊)描述了該技術(shù),但各實(shí)施例不限于立即用戶動(dòng)作,并可應(yīng)用于系統(tǒng)內(nèi)用戶可想要跟蹤的任何事件,諸如但不限于,滾輪、空閑處理延遲等。各實(shí)施例可以使用硬件元件、軟件元件或兩者的組合來實(shí)現(xiàn)。硬件元件的示例可包括設(shè)備、組件、處理器、微處理器、電路、電路元件、集成電路、專用集成電路、可編程邏輯器件、數(shù)字信號(hào)處理器、現(xiàn)場可編程門陣列、存儲(chǔ)器單元、邏輯門等。軟件元件的示例可以包括軟件組件、程序、應(yīng)用、計(jì)算機(jī)程序、應(yīng)用程序、系統(tǒng)程序、機(jī)器程序、操作系統(tǒng)軟件、中間件、固件、軟件模塊、例程、子例程、函數(shù)、方法、過程、軟件接□、應(yīng)用程序接口、指令集、計(jì)算代碼、代碼段、或其任何組合。判斷一實(shí)施例是使用硬件元件和/或軟件元件來實(shí)現(xiàn)可根據(jù)給定實(shí)現(xiàn)所需的任何數(shù)量的因素而變化,這些因素如所需計(jì)算速率、功率級(jí)、帶寬、計(jì)算時(shí)間、負(fù)載平衡、存儲(chǔ)器資源、數(shù)據(jù)總線速度以及其它設(shè)計(jì)或性能約束。一些實(shí)施例可包括存儲(chǔ)指令或邏輯的存儲(chǔ)介質(zhì)。存儲(chǔ)介質(zhì)的示例可包括能夠存儲(chǔ)電子數(shù)據(jù)的一種或多種類型的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),包括易失性存儲(chǔ)器或非易失性存儲(chǔ)器、可移動(dòng)或不可移動(dòng)存儲(chǔ)器、可擦除或不可擦除存儲(chǔ)器、可寫或可重寫存儲(chǔ)器等。邏輯的示例可包括各種軟件元件,諸如程序、過程、模塊、應(yīng)用、代碼段、程序棧、中間件、固件、方法、例程等。例如,在一個(gè)實(shí)施例中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以存儲(chǔ)可執(zhí)行的計(jì)算機(jī)程序指令,這些指令在由處理器執(zhí)行時(shí)使得該處理器執(zhí)行根據(jù)所描述的各實(shí)施例的方法和/或操作??蓤?zhí)行的計(jì)算機(jī)程序指令可根據(jù)用于指示計(jì)算機(jī)執(zhí)行特定功能的預(yù)定義的計(jì)算機(jī)語言、方式或句法來實(shí)現(xiàn)。這些指令可以使用任何合適的高級(jí)、低級(jí)、面向?qū)ο?、可視、編譯、和/或解釋編程語言來實(shí)現(xiàn)。
權(quán)利要求
1.一種計(jì)算機(jī)實(shí)現(xiàn)的方法,包括 標(biāo)識(shí)將在應(yīng)用的執(zhí)行期間發(fā)生的至少一個(gè)事件,所述事件與延遲閾值和跟蹤長度相關(guān)聯(lián)(306); 監(jiān)視所述事件在所述應(yīng)用的執(zhí)行期間的發(fā)生(308 );以及 在確定所述事件超過了所述延遲閾值后,記錄系統(tǒng)范圍跟蹤達(dá)所述跟蹤長度(312)。
2.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,所述監(jiān)視步驟還包括 在所述應(yīng)用中提供一個(gè)或多個(gè)標(biāo)記事件(162,164),每一標(biāo)記事件觸發(fā)對(duì)所述應(yīng)用在處理所述事件時(shí)的響應(yīng)時(shí)間的測(cè)量。
3.如權(quán)利要求2所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,還包括 確定從第一標(biāo)記事件到第二標(biāo)記事件所流逝的時(shí)間,所述流逝的時(shí)間用于確定所述事件是否超過了所述延遲閾值(160)。
4.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,所述事件與所述應(yīng)用對(duì)立即用戶動(dòng)作(146)的響應(yīng)相關(guān)聯(lián)。
5.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,還包括 提供用戶定義的設(shè)置文件(124),所述設(shè)置文件標(biāo)識(shí)要監(jiān)視的一個(gè)或多個(gè)事件、每一事件的延遲閾值以及每一事件的跟蹤長度。
6.一種其上存儲(chǔ)有處理器可執(zhí)行指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),包括 具有供在處理器上執(zhí)行的指令的應(yīng)用(110),所述應(yīng)用具有多個(gè)標(biāo)記事件(162,164),每一標(biāo)記事件標(biāo)識(shí)所述應(yīng)用中對(duì)立即用戶動(dòng)作的處理發(fā)生的點(diǎn); 具有多個(gè)事件、多個(gè)延遲閾值和多個(gè)跟蹤長度的設(shè)置文件(124),每一事件與一立即用戶動(dòng)作相關(guān)聯(lián),每一延遲閾值與一事件相關(guān)聯(lián),且每一跟蹤長度與一事件相關(guān)聯(lián);以及 立即延遲跟蹤器工具(172),所述立即延遲跟蹤器工具具有在處理器上執(zhí)行時(shí)從所述設(shè)置文件(124)獲取事件、延遲閾值和跟蹤長度并監(jiān)視所述事件的發(fā)生的指令,在所述事件的發(fā)生時(shí)所述事件在應(yīng)用的執(zhí)行期間被一個(gè)或多個(gè)標(biāo)記事件引發(fā),所述立即延遲跟蹤器工具還具有在處理器上執(zhí)行時(shí)記錄在所述事件的發(fā)生之后執(zhí)行的所有進(jìn)程的系統(tǒng)范圍跟蹤的指令,在所述事件的發(fā)生之后所述事件執(zhí)行了達(dá)超過所述跟蹤長度的持續(xù)時(shí)間。
7.如權(quán)利要求6所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述應(yīng)用是集成開發(fā)環(huán)境(110)。
8.如權(quán)利要求11所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,還包括 事件跟蹤引擎(116),所述事件跟蹤引擎具有在處理器上執(zhí)行時(shí)向所述立即延遲跟蹤器工具提供所述事件的發(fā)生的通知的指令;以及 具有在處理器上執(zhí)行時(shí)使用所述通知來確定延遲是否已發(fā)生的指令的所述立即延遲跟蹤器工具(172)。
9.如權(quán)利要求6所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,還包括 包含從用戶日志文件(120)、內(nèi)核日志文件(122)和運(yùn)行終了文件(126)獲取的日志數(shù)據(jù)的合并文件(134),所述用戶日志文件包含與所述應(yīng)用在所述跟蹤長度期間的執(zhí)行相關(guān)聯(lián)的數(shù)據(jù),所述內(nèi)核日志文件包含與操作系統(tǒng)在所述跟蹤長度期間的執(zhí)行相關(guān)聯(lián)的數(shù)據(jù),且所述運(yùn)行終了文件包含與受管代碼應(yīng)用在所述跟蹤長度期間的執(zhí)行相關(guān)聯(lián)的數(shù)據(jù)。
10.如權(quán)利要求9所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述立即延遲跟蹤器工具具有在處理器上執(zhí)行時(shí)分析所述合并文件以標(biāo)識(shí)與所述設(shè)置文件中標(biāo)識(shí)的事件相關(guān)聯(lián)的 延遲,該延遲被存儲(chǔ)在系統(tǒng)文件(318)中。
全文摘要
本發(fā)明涉及立即延遲跟蹤器工具。立即延遲跟蹤器工具監(jiān)聽超過延遲閾值的用戶指定事件的發(fā)生。在一實(shí)施例中,這些事件與由用戶界面(UI)線程處理的立即用戶動(dòng)作相關(guān)聯(lián),在該用戶界面線程中該立即用戶動(dòng)作的響應(yīng)時(shí)間需要瞬時(shí)響應(yīng)。當(dāng)事件超過延遲閾值時(shí),系統(tǒng)中的所有進(jìn)程和/或線程的控制流被記錄、過濾并隨后被分析以得到延遲的源。
文檔編號(hào)G06F9/30GK102999314SQ20121036152
公開日2013年3月27日 申請(qǐng)日期2012年9月21日 優(yōu)先權(quán)日2011年9月23日
發(fā)明者C·麥科爾, P·普賴斯, B·艾京, S·巴薩瓦 申請(qǐng)人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1