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