使用可修改的快照定義來對執行代碼拍攝快照的制作方法
【專利說明】使用可修改的快照定義來對執行代碼拍攝快照
[0001]相關申請的交叉引用
[0002]本專利申請要求以下申請的權益和優先權:于2013年8月19日提交的題為“Snapshotting Executing Code with a Modifiable Snapshot Definit1n(使用可修改的快照定義來對執行代碼拍攝快照),,的美國專利申請序列號13/970,302、于2013年8月19日提交的題為 “Combined Performance Tracer and Snapshot Debugging System(組合的性能跟蹤器和快照調試系統)”的美國專利申請序列號13/970,319、于2013年8月19日提交的題為“Breakpoint Setting Through a Debugger User Interface(通過調試器用戶界面的斷點設置)”的美國專利申請序列號13/970,343,這些申請都通過援引它們所教導和揭示的全部內容而被明確結合于此。
[0003]背景
[0004]系統崩潰轉儲是當計算機程序遇到計算機因此不能再運行的錯誤時可被收集的數據集。操作系統和其它軟件管理產品可收集災難性故障處的數據,使得程序員可以能夠檢測該故障的原因。程序員可接著能夠重新創建該錯誤或作出可防止再次發生該錯誤的改變。
[0005]概述
[0006]跟蹤和調試系統可響應于某一事件來拍攝應用的快照,并可在該快照被捕獲后繼續執行程序。快照可被存儲并稍后在調試工具中被檢索,在調試工具中,程序員可瀏覽快照,或者快照可使得某個其它分析被執行。快照可包括應用的狀態的子集,諸如調用棧、源代碼的各部分、局部和全局變量的值以及各種元數據。快照可被定義在快照配置中,該快照配置可包括事件描述以及要被收集的數據。
[0007]跟蹤和調試系統可收集性能相關跟蹤器數據和快照數據兩者。跟蹤器數據可包括經聚集的性能和操作數據,而快照數據可包括調用棧、源代碼以及其它可有用于對應用的調試和詳細理解的信息。快照數據可被存儲在與跟蹤器數據分開的數據庫中,因為快照數據可包括可能是私有或敏感的數據,而跟蹤器數據可以是可能較不敏感的經聚集的信息。調試用戶界面可被用于訪問、顯示和瀏覽存儲的快照數據。
[0008]調試系統可顯示可響應于在應用執行時被標識的事件來被收集的快照信息。調試系統可允許用戶瀏覽快照中的各種數據元素,并可允許用戶通過在快照數據內包括或排除各種數據元素來修改快照配置。用戶界面可具有用于包括或排除可在瀏覽期間被呈現的數據元素的機制以及用于改變可觸發快照的事件的選項。經更新的快照配置可被保存以用于當事件條件被滿足時的將來的執行。
[0009]提供本概述以便以簡化形式介紹將在以下詳細描述中進一步描述的一些概念。本概述并不旨在標識所要求保護主題的關鍵特征或必要特征,也不旨在用于限制所要求保護主題的范圍。
[0010]附圖簡述
[0011]在附圖中,
[0012]圖1是示出用于快照調試的系統的實施例的圖示。
[0013]圖2是示出具有可收集和查看快照的設備的網絡環境的實施例的圖示。
[0014]圖3是示出組合的性能監視和快照收集系統的實施例的圖示。
[0015]圖4是示出用于調試查看器的示例用戶界面的實施例的圖示。
[0016]圖5是示出用于收集快照實例的方法的實施例的流程圖示。
[0017]圖6是示出用于將快照代碼插入在應用中的方法的實施例的流程圖示。
[0018]圖7是示出用于收集快照實例的更加詳細的方法的實施例的流程圖示。
[0019]圖8是示出用于包裝函數與快照代碼的方法的實施例的流程圖示。
[0020]圖9是示出用于快照使用周期的方法的實施例的流程圖示。
[0021]圖10是示出用于查看快照實例的方法的實施例的流程圖示。
[0022]詳細描述
[0023]使用可修改的快照定義來對執行代碼拍攝快照快照調試系統可響應于某一事件來拍攝應用的快照,并存儲快照以供稍后查看。快照可在應用執行時進行,并可收集在指定事件處的各種程序狀態。程序狀態可包括局部和全局變量值、調用棧、與執行代碼有關的源代碼和其它?目息。
[0024]調試界面可被用于查看、瀏覽或以其它方式檢查每個快照的內容。在一些情況下,快照可以是在每個事件被檢測到時該程序的相對輕量的掠影。程序員可為條件(在該條件下可能在過去出現過問題)定義快照,并且快照可允許程序員具有回看在該事件時的程序狀態以確定被監視事件的原因和效果的能力。
[0025]快照機制可用若干種方式來部署。在一簡單實現中,程序員可手動地將快照代碼插入到應用中。快照代碼可包括當被滿足時致使快照被拍攝的條件。
[0026]在更復雜的實現中,快照代碼可通過在運行時監視應用代碼來部署。在這樣的實現中,監視代理可檢查快照條件。當條件被滿足時,監視代理可致使應用暫停,接著收集快照數據,并致使應用恢復執行。這樣的實現可結合監視系統來部署,該監視系統可包裝函數調用或提供某個其它性能監視。
[0027]快照可被編輯和修改。快照可包括可觸發快照被拍攝的事件的定義以及要被收集的數據的定義。觸發事件定義可使用任意類型的表達式、事件或其它信息來定義,并可在運行時被評估。數據收集定義可定義要收集的數據的類型以及來自局部和全局變量的值、元數據、外部事件和其它信息。在一些實施例中,快照可包括可作為數據收集過程的一部分來被執行的可執行代碼。
[0028]快照可使用查看或瀏覽用戶界面來被查看。在許多情況下,快照可在調試用戶界面中被查看,該調試用戶界面還可用作實時調試器的一部分。這樣的實施例可將存儲的快照作為實時調試器的從快照被拍攝時召回的實例來查看。用戶與快照的交互可類似于用戶與實時調試器的交互,但是可缺乏類似于實時調試器的步進向前或向后通過代碼的能力。
[0029]快照調試系統可以是可收集各個事件處的程序狀態的輕量數據收集系統。數據收集在以下意義上而言可以是輕量的:應用可被暫停一較短時間段,接著繼續執行。這樣的數據收集可給予程序員關于在特定事件周圍發生了什么的一些洞察,使得程序員可以能夠更好地改進或修改應用。
[0030]組合的性能跟蹤器和快照調試系統
[0031]跟蹤和快照調試可集成連續的性能測量和快照以更好地理解計算應用的行為。性能測量系統可在周期性的基礎上監視應用,并可以是在其上程序狀態的快照可被拍攝的平臺。
[0032]性能測量系統可通過不同的機制來監視應用,諸如檢測應用、監視應用在其中運行的執行環境、或其它機制。當監視正在進行時,快照管理器可檢測針對快照的條件并可致使快照被拍攝并存儲。
[0033]性能測量可以是性能度量(諸如計數或其它概要度量)的聚集,而快照可包括可被應用操作或處理的實際數據。在這樣的實施例中,快照可包括敏感數據并且快照可被存儲在與性能度量分開的存儲儲存庫中,性能度量可包括較不敏感的信息。在一些實施例中,快照數據的某些或全部可被加密。
[0034]通過調試器用戶界面的斷點設置
[0035]調試用戶界面可被用于查看和瀏覽快照實例。當查看快照實例時,調試用戶界面可具有與該同一界面可被用于實時調試時類似的用戶體驗,但是被顯示的數據可從針對快照的存儲儲存庫中檢索,而非從在實時調試情況下的實況執行環境中檢索數據。
[0036]用戶可以能夠創建或修改快照定義以供部署將來的快照。在許多情況下,快照可包括在快照被拍攝時的應用狀態的子集。當用戶標識不被包括在快照中的變量或其它數據對象時,用戶可以能夠將該對象添加到將來的快照。在典型的用戶界面中,用戶可以能夠拖放、右擊或在用戶界面中執行某個其它交互來選擇對象以供從快照中包括或排除。
[0037]在快照被定義后,快照可被部署來在應用執行時收集數據。
[0038]貫穿本說明書和權利要求書,術語“探查器”(profiler)、"跟蹤器”和“探測工具(instrumentat1n)”被可互換地使用。這些術語指代可在應用被執行時采集數據的任何機制。在經典定義中,“探測工具”可指代可被插入可執行代碼并從而改變該可執行代碼的生成方法存根(stub)、掛鉤(hook)或其他數據采集機制,而“探查器”或“跟蹤器”可經典地指代不可改變可執行代碼的數據采集機制。對這些術語及其派生詞中的任一者的使用都可蘊含或暗示彼此。例如,使用“跟蹤器”的數據收集可使用“跟蹤器”的經典意義中的非接觸式數據收集以及用其中可執行代碼可被改變的“探測工具”的經典意義的數據收集來執行。類似地,通過“探測工具”收集的數據可包括使用非接觸式數據收集機制的數據收集。
[0039]此外,通過“探查”、“跟蹤”和“探測工具”收集的數據可包括可被收集的任何類型的數據,包括諸如處理時間、吞吐量、性能計數器等等之類的與性能有關的數據。收集到的數據可包括函數名、傳遞的參數、存儲器對象名和內容、傳遞的消息、消息內容、寄存器設置、寄存器內容、差錯標志、中斷、或與正被跟蹤的應用有關的任何其他參數或其他可收集的數據。
[0040]貫穿本說明書和權利要求書,術語“執行環境”可被用于指代用于執行應用的任何類型的支持軟件。執行環境的一示例是操作系統。在一些舉例說明中,“執行環境”可被示為與操作系統分開。這可能是為了例示出為應用提供各支持功能的虛擬機,諸如進程虛擬機。在其他實施例中,虛擬機可以是可包括其自己的內部操作系統并可模擬整個計算機系統的系統虛擬機。
[0041]貫穿本說明書和權利要求書,術語“執行環境”包括操作系統和可具有或可不具有可容易標識的“虛擬機”或其他支持軟件的其他系統。
[0042]貫穿本說明書和權利要求書,術語“應用”被用來指代可執行期望功能的軟件和硬件產品的任何組合。在一些情況下,應用可以是用硬件平臺操作的單一軟件程序。一些應用可使用多個軟件組件,每個軟件組件可以是用不同語言編寫的或可在不同硬件或軟件執行環境內執行。在一些情況下,這些應用可跨多個設備分散并且可使用可由網絡或其它通信系統連接的軟件和硬件組件。
[0043]貫穿本說明書,貫穿對附圖的描述,相同的附圖標記表示相同的元素。
[0044]在本說明書和權利要求書中,對“處理器”的引用包括多個處理器。在某些情況中,可由“一處理