欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

使用輕量進(jìn)程快照的歷史軟件診斷的制作方法

文檔序號(hào):8207705閱讀:404來(lái)源:國(guó)知局
使用輕量進(jìn)程快照的歷史軟件診斷的制作方法
【專利說(shuō)明】使用輕量進(jìn)程快照的歷史軟件診斷
[0001] 背景
[0002] 傳統(tǒng)的軟件診斷工具(諸如調(diào)試器、剖析器以及存儲(chǔ)器診斷工具)通常對(duì)實(shí)況的、 正在運(yùn)行的進(jìn)程或保存的、重量進(jìn)程狀態(tài)(諸如進(jìn)程轉(zhuǎn)儲(chǔ)文件或歷史軌跡)進(jìn)行操作。實(shí) 況的進(jìn)程提供關(guān)于進(jìn)程如何達(dá)到其當(dāng)前狀態(tài)的很少的歷史上下文或不提供關(guān)于進(jìn)程如何 達(dá)到其當(dāng)前狀態(tài)的歷史上下文。在冗長(zhǎng)的同時(shí),創(chuàng)建和分析進(jìn)程轉(zhuǎn)儲(chǔ)文件是極其重量且耗 時(shí)的。
[0003] 對(duì)于軟件開(kāi)發(fā)者而言,在診斷進(jìn)程期間分析歷史數(shù)據(jù)是普遍的。例如,在調(diào)試時(shí), 開(kāi)發(fā)者可能想要檢查進(jìn)程,像其存在于先前狀態(tài)中而非當(dāng)前狀態(tài)中的那樣。對(duì)于存儲(chǔ)器診 斷,開(kāi)發(fā)者經(jīng)常想要查看隨著時(shí)間在進(jìn)程的存儲(chǔ)器中的改變。
[0004] 在生產(chǎn)場(chǎng)景和開(kāi)發(fā)場(chǎng)景兩者中,不侵略性且不破壞性地收集診斷數(shù)據(jù)是重要的。 在生產(chǎn)中,診斷工具應(yīng)當(dāng)對(duì)生產(chǎn)進(jìn)程和系統(tǒng)具有很少影響或不具有影響。使用現(xiàn)有的方案 來(lái)對(duì)進(jìn)程狀態(tài)數(shù)據(jù)進(jìn)行收集可能以不期望的方式影響進(jìn)程和系統(tǒng)。

【發(fā)明內(nèi)容】

[0005] 提供本概述是為了以簡(jiǎn)化的形式介紹將在以下【具體實(shí)施方式】中進(jìn)一步描述的概 念選擇。本概述并不旨在標(biāo)識(shí)所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于限 制所要求保護(hù)的主題的范圍。
[0006] 調(diào)試和診斷系統(tǒng)允許用戶取得實(shí)況的被調(diào)試進(jìn)程的輕量進(jìn)程快照,因此用戶可以 在稍后時(shí)間分析這些快照。可以在生產(chǎn)場(chǎng)景中使用調(diào)試和存儲(chǔ)器診斷系統(tǒng),因?yàn)樗趯?duì) 生產(chǎn)系統(tǒng)的破壞最小化的同時(shí)依然允許用戶捕捉進(jìn)程狀態(tài)的快照。輕量進(jìn)程快照允許對(duì) 進(jìn)程的調(diào)用棧、變量值、存儲(chǔ)器、模塊列表、線程列表等等的檢查,同時(shí)允許原始進(jìn)程繼續(xù)執(zhí) 行。
[0007] 快照機(jī)制允許診斷工具將原始進(jìn)程和一個(gè)或多個(gè)進(jìn)程快照進(jìn)行比較,或?qū)⒁幌盗?進(jìn)程快照中的任意快照相互比較。所述快照機(jī)制還允許用戶檢查進(jìn)程存儲(chǔ)器的快照,同時(shí) 允許原始進(jìn)程以最小影響方式繼續(xù)運(yùn)行。
[0008] 在此所用的術(shù)語(yǔ)輕量進(jìn)程快照或"快照"意指可以在不需要?jiǎng)?chuàng)建進(jìn)程的執(zhí)行或存 儲(chǔ)器的完整軌跡的情況下被有效創(chuàng)建的進(jìn)程的副本。在典型的實(shí)施例中,操作系統(tǒng)在虛擬 存儲(chǔ)器模型的頂部實(shí)現(xiàn)快照機(jī)制,并且使用共享存儲(chǔ)器頁(yè)和寫時(shí)復(fù)制技術(shù)來(lái)避免對(duì)創(chuàng)建進(jìn) 程的完整副本的需求。寫時(shí)復(fù)制允許操作系統(tǒng)將原始進(jìn)程的整個(gè)地址空間的實(shí)際頁(yè)快速映 射到第二進(jìn)程快照中。
[0009] 如果原始進(jìn)程在快照后執(zhí)行,則由原始進(jìn)程作出的任意存儲(chǔ)器寫將導(dǎo)致該存儲(chǔ)器 頁(yè)的副本被創(chuàng)建。然而,只有被進(jìn)程執(zhí)行實(shí)際修改的頁(yè)將具有創(chuàng)建的副本。未被修改的頁(yè) 在原始進(jìn)程和任意進(jìn)程快照之間共享。
[0010] 存儲(chǔ)器診斷系統(tǒng)允許通過(guò)執(zhí)行進(jìn)程快照中的收集代碼對(duì)進(jìn)程存儲(chǔ)器信息進(jìn)行收 集,同時(shí)允許原始進(jìn)程繼續(xù)分開(kāi)地運(yùn)行。存儲(chǔ)器診斷系統(tǒng)可用對(duì)于目標(biāo)進(jìn)程而言最小的破 壞和存儲(chǔ)器開(kāi)銷來(lái)以進(jìn)程外方式收集目標(biāo)進(jìn)程存儲(chǔ)器信息。用戶可攝取實(shí)況的被調(diào)試進(jìn)程 的存儲(chǔ)器的兩個(gè)或更多個(gè)快照并比較這些快照來(lái)尋找隨著時(shí)間的存儲(chǔ)器使用方面的改變。 [0011] 如果隨著時(shí)間被攝取的多個(gè)進(jìn)程快照的共享存儲(chǔ)器的大部分保持未被改變,則相 比于使用存儲(chǔ)器轉(zhuǎn)儲(chǔ),該多個(gè)進(jìn)程快照可以較輕的方式被一起使用。使用隨著時(shí)間的多個(gè) 快照,快照數(shù)據(jù)可與基線進(jìn)行比較或在快照之間進(jìn)行比較。附加的歷史快照可被部分讀取 來(lái)分析隨時(shí)間的趨勢(shì)。
[0012] 存儲(chǔ)器診斷系統(tǒng)可在收集時(shí)應(yīng)用數(shù)據(jù)抽象,其允許多個(gè)收集被交叉參考。系統(tǒng)可 基于歷史收集數(shù)據(jù)來(lái)動(dòng)態(tài)且自動(dòng)地調(diào)整快照收集速率,其將在使用進(jìn)程快照時(shí)最小化資源 使用。
[0013] 通過(guò)使用進(jìn)程快照,來(lái)自進(jìn)程內(nèi)收集的存儲(chǔ)器開(kāi)銷可通過(guò)將該收集移動(dòng)到快照進(jìn) 程來(lái)被減少。例如,在進(jìn)程內(nèi)組件的情況下,存儲(chǔ)器被針對(duì)其收集信息的進(jìn)程所消耗。該信 息可被存儲(chǔ)在目標(biāo)進(jìn)程的快照中。這將不會(huì)影響目標(biāo)進(jìn)程的性能或由于對(duì)診斷信息的收集 而潛在地導(dǎo)致其達(dá)到存儲(chǔ)器用盡條件。因此,這種技術(shù)極大地減少了破壞原始進(jìn)程的機(jī)會(huì)。
【附圖說(shuō)明】
[0014] 為了進(jìn)一步闡明本發(fā)明的各實(shí)施例的以上和其他優(yōu)點(diǎn)和特征,將參考附圖來(lái)呈現(xiàn) 本發(fā)明的各實(shí)施例的更具體的描述??梢岳斫?,這些附圖只描繪本發(fā)明的典型實(shí)施例,因此 將不被認(rèn)為是對(duì)其范圍的限制。本發(fā)明將通過(guò)使用附圖用附加特征和細(xì)節(jié)來(lái)描述和解釋, 附圖中:
[0015] 圖1示出用輕量進(jìn)程快照的歷史調(diào)試。
[0016] 圖2示出根據(jù)一個(gè)實(shí)施例的輕量進(jìn)程快照。
[0017] 圖3是示出用于進(jìn)程內(nèi)收集場(chǎng)景的方法的流程圖。
[0018] 圖4是根據(jù)一個(gè)實(shí)施例示出用于用戶驅(qū)動(dòng)的診斷收集的方法的流程圖。
[0019] 圖5示出了通過(guò)針對(duì)輕量進(jìn)程快照進(jìn)行檢查,同時(shí)允許真實(shí)的被調(diào)試進(jìn)程繼續(xù)運(yùn) 行的較不侵略性調(diào)試。
[0020] 圖6示出了按需存儲(chǔ)器數(shù)據(jù)收集和檢查實(shí)施例。
[0021] 圖7解說(shuō)了其上可以實(shí)現(xiàn)輕量進(jìn)程快照實(shí)施例的適當(dāng)?shù)挠?jì)算和聯(lián)網(wǎng)環(huán)境的示例。
【具體實(shí)施方式】
[0022] 輕量進(jìn)程快照可與目標(biāo)進(jìn)程在其上運(yùn)行的操作系統(tǒng)合作來(lái)被創(chuàng)建。相比于要求診 斷工具親自創(chuàng)建快照,這允許快照被快得多地并使用較少的系統(tǒng)資源來(lái)被創(chuàng)建。在一個(gè)實(shí) 施例中,操作系統(tǒng)的存儲(chǔ)器映射機(jī)制和寫時(shí)復(fù)制(copy-onirite)被用于在目標(biāo)進(jìn)程的地 址空間中映射到新的快照進(jìn)程。進(jìn)程快照可以是使用頁(yè)表復(fù)制和寫時(shí)復(fù)制操作的對(duì)正在執(zhí) 行的進(jìn)程的克隆。進(jìn)程快照可通過(guò)其它方式被創(chuàng)建,諸如通過(guò)在目標(biāo)進(jìn)程上反射或復(fù)制目 標(biāo)進(jìn)程的存儲(chǔ)器地址。
[0023] 如果原始進(jìn)程被允許運(yùn)行,則新的存儲(chǔ)器頁(yè)副本在進(jìn)程向每頁(yè)進(jìn)行寫時(shí)被創(chuàng)建。 這可對(duì)原始進(jìn)程的性能具有一些最小影響,但是它必須僅在當(dāng)某頁(yè)被實(shí)際寫入時(shí)創(chuàng)建實(shí)際 頁(yè)。
[0024] 在一些實(shí)施例中,進(jìn)程狀態(tài)可被診斷工具復(fù)制。例如,進(jìn)程快照機(jī)制可能不對(duì)模塊 列表或線程列表進(jìn)行快照,但是診斷工具可快速地創(chuàng)建模塊列表或線程列表的快照并不以 復(fù)制進(jìn)程堆或棧所需要的方式來(lái)消耗資源。
[0025] 輕量進(jìn)程快照模型在調(diào)試會(huì)話期間啟用歷史調(diào)試的模式。隨著時(shí)間的被調(diào)試進(jìn)程 的快照允許用戶查看被調(diào)試進(jìn)程的狀態(tài),就好像其在快照被攝取時(shí)所存在的那樣。用戶可 控制何時(shí)快照被攝取或調(diào)試器可在某個(gè)預(yù)定的觸發(fā)或事件后自動(dòng)地?cái)z取快照。系統(tǒng)的物理 和邏輯資源是對(duì)一次可為進(jìn)程創(chuàng)建的快照的數(shù)量的唯一限制。這使得調(diào)試會(huì)話一次具有存 在于系統(tǒng)中的多個(gè)快照成為可能。
[0026] 在一個(gè)實(shí)施例中,當(dāng)開(kāi)發(fā)者希望檢查處于存在于特定時(shí)間處的狀態(tài)中的進(jìn)程時(shí), 開(kāi)發(fā)者從可用快照列表中選擇對(duì)應(yīng)于那個(gè)時(shí)間的快照。一旦快照被選擇,其可被用作調(diào)試 器的數(shù)據(jù)源以供檢查。在這個(gè)模式中,使用快照數(shù)據(jù)一而非實(shí)況的進(jìn)程一來(lái)生成所有調(diào)試 器視圖,包括但不限于調(diào)用棧、變量值、存儲(chǔ)器、模塊列表和線程列表。這使得開(kāi)發(fā)者能夠查 看在所選時(shí)間處的進(jìn)程的狀態(tài)。
[0027] 使用這個(gè)模型,一些狀態(tài)可能是不可被檢查的。例如,可能不能為內(nèi)核或其它實(shí)體 (諸如文件或管道)中的狀態(tài)生成快照。然而,通過(guò)與操作系統(tǒng)的充分合作,有可能將這個(gè) 機(jī)制擴(kuò)展到不僅僅是對(duì)進(jìn)程狀態(tài)進(jìn)行快照并包括這些外部實(shí)體的副本。
[0028] 實(shí)況的進(jìn)程調(diào)試器通常使用存儲(chǔ)器讀取原語(yǔ)和線程上下文原語(yǔ)來(lái)用于數(shù)據(jù)檢 查。當(dāng)調(diào)試器需要獲得特定數(shù)據(jù)片段的值時(shí),調(diào)試器查詢符號(hào)信息來(lái)確定它駐留在被調(diào)試 進(jìn)程存儲(chǔ)器中的何處。這可例如要求讀取線程寄存器狀態(tài)。調(diào)試器接著使用函數(shù)(諸如 Win32? ReadProcessMemory (讀取進(jìn)程存儲(chǔ)器)和GetThreadContext (獲得線程上下文) 函數(shù))來(lái)從進(jìn)程中讀取想要的數(shù)據(jù)。當(dāng)調(diào)試器切換到作為數(shù)據(jù)源的進(jìn)程快照時(shí),讀取是簡(jiǎn) 單地從快照進(jìn)程讀取。
[0029] 圖1示出用輕量進(jìn)程快照的歷史調(diào)試。調(diào)試器進(jìn)程101被用于調(diào)試被調(diào)試進(jìn)程 102。調(diào)試器進(jìn)程101具有允許用戶分析被調(diào)試進(jìn)程的組件的用戶界面。例如,用戶界面可 以提供示出調(diào)用棧103、模塊104、線程105和變量檢查106的窗口。被調(diào)試進(jìn)程102包括, 例如,線程107、模塊108和虛擬存儲(chǔ)器頁(yè)表109。虛擬存儲(chǔ)器109指向由操作系統(tǒng)的虛擬 存儲(chǔ)器管理器110所管理的物理存儲(chǔ)器頁(yè)111。
[0030] 在調(diào)試會(huì)話期間,創(chuàng)建輕量進(jìn)程快照112和113。這些是在特定時(shí)間攝取的被調(diào)試 進(jìn)程102的快照??梢杂捎脩羰謩?dòng)發(fā)起快照112、113,或者調(diào)試器101可以在當(dāng)觀察到特定 事件或觸發(fā)時(shí)或以某些間隔自動(dòng)生成快照112、113。
[0031] 快照112包括線程表114和模塊表115,它們是在快照112被創(chuàng)建的時(shí)刻(Tl)時(shí) 調(diào)試器101的內(nèi)部表的副本。虛擬存儲(chǔ)器頁(yè)表116指向在快照112被創(chuàng)建的時(shí)刻Tl時(shí)所 使用的物理存儲(chǔ)器頁(yè)110。最初,虛擬存儲(chǔ)器109和虛擬存儲(chǔ)器116將是等同的;然而,隨 著被調(diào)試進(jìn)程繼續(xù)運(yùn)行,虛擬存儲(chǔ)器109將改變,因?yàn)樗捻?yè)表指向了經(jīng)更新的存儲(chǔ)器位 置 110。
[0032] 類似地,在另一時(shí)刻(T2),響應(yīng)于用戶選擇或由調(diào)試器進(jìn)程101所觀察到的事件 或觸發(fā)的出現(xiàn),創(chuàng)建進(jìn)程快照113??煺?13包括在當(dāng)該快照和當(dāng)時(shí)的虛擬存儲(chǔ)器頁(yè)表119 的副本一起被創(chuàng)建的時(shí)刻T2時(shí)的線程表117和模塊表118的副本。
[0033] 快照112、113允許調(diào)試器進(jìn)程101或用戶回看在快照112、113被創(chuàng)建的時(shí)刻 (Tl, T2)被調(diào)試進(jìn)程102看起來(lái)像什么,盡管被調(diào)試進(jìn)程102在此期間已經(jīng)被改變。并且, 調(diào)試器進(jìn)程可以比較被調(diào)試進(jìn)程102和/或進(jìn)程快照112、113之間的狀態(tài)以生成在不同的 時(shí)間的不同進(jìn)程狀態(tài)之間的差異,這樣用戶可以查看進(jìn)程的哪個(gè)部分已經(jīng)被改變以及如何 被改變。
當(dāng)前第1頁(yè)1 2 3 4 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
宁河县| 五寨县| 鄢陵县| 沈阳市| 卢龙县| 泸西县| 遂昌县| 枣庄市| 怀仁县| 盈江县| 高雄县| 秭归县| 临沂市| 巴彦淖尔市| 深泽县| 安平县| 大新县| 延庆县| 东港市| 盐津县| 富顺县| 团风县| 富民县| 瑞丽市| 峨山| 寿阳县| 仁化县| 天等县| 德安县| 隆化县| 台南市| 鹤庆县| 奇台县| 郸城县| 温宿县| 高台县| 墨玉县| 高台县| 太原市| 集安市| 中宁县|