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

用于程序調(diào)試中的變量跟蹤的方法和系統(tǒng)的制作方法

文檔序號:9921952閱讀:1395來源:國知局
用于程序調(diào)試中的變量跟蹤的方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明的實施例總體上涉及程序開發(fā)領(lǐng)域,并且特別涉及用于程序調(diào)試中的變量跟蹤的方法和裝置。
【背景技術(shù)】
[0002]在程序開發(fā)過程中,程序員需要對所編制的程序進行調(diào)試(debugging),以發(fā)現(xiàn)程序源代碼中的語法和/或邏輯錯誤。調(diào)試器(debugger)是用于執(zhí)行調(diào)試的常見工具。例如,在集成開發(fā)環(huán)境(IDE)中通常提供專門的調(diào)試器。在調(diào)試過程中經(jīng)常需要執(zhí)行變量跟蹤(variable tracking)。
[0003]具體而言,在調(diào)試過程中,程序員往往需要確認給定變量的值是否處在合理范圍內(nèi)。目前,可以使用監(jiān)測點(watch point)來跟蹤變量的值。以C或者C++語言為例,程序員可以使用assert之類的語句使程序的運行中止于指定位置。繼而,調(diào)試器可以獲取分配給待檢查變量的存儲地址中實際存儲的值,以供用戶查看。監(jiān)測點實質(zhì)上是一種內(nèi)存斷點。這樣,程序員可以查看變量的值以及其他相關(guān)信息。
[0004]然而,在這種傳統(tǒng)解決方案中,為了跟蹤變量值的變化,程序員必須針對程序中所有可能改變變量值的賦值表達式而設(shè)置監(jiān)測點。而且,可能影響變量值的賦值表達式通常作用于不同變量和/或位于不同的函數(shù)中。這不僅增加了程序員的負擔,而且不利于變量跟蹤過程的自動化。而且,在找到導致變量值的異常改變的根源之前,程序的執(zhí)行可能被多次中斷。

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

[0005]總體上,本發(fā)明的實施例提出一種用于程序調(diào)試中的變量跟蹤的技術(shù)方案。
[0006]在本發(fā)明的一個方面,提供一種用于程序調(diào)試中的變量跟蹤的方法。所述方法包括:確定待跟蹤的第一變量以及與所述第一變量相關(guān)聯(lián)的待監(jiān)測的第一表達式;對所調(diào)試的程序代碼執(zhí)行逆向掃描以搜索對所述第一變量進行賦值的賦值表達式;以及響應(yīng)于找到所述賦值表達式,在包含所述賦值表達式的賦值語句之后,設(shè)置與所述第一表達式相關(guān)聯(lián)的監(jiān)測點以便檢查所述第一表達式是否成立。
[0007]在另一方面,提供一種用于程序調(diào)試中的變量跟蹤的系統(tǒng)。所述系統(tǒng)包括:目標確定單元,被配置為確定待跟蹤的第一變量以及與所述第一變量相關(guān)聯(lián)的待監(jiān)測的第一表達式;掃描單元,被配置為對所調(diào)試的程序代碼執(zhí)行逆向掃描以搜索對所述第一變量進行賦值的賦值表達式;以及監(jiān)測點設(shè)置單元,被配置為響應(yīng)于找到所述賦值表達式,在包含所述賦值表達式的賦值語句之后,設(shè)置與所述第一表達式相關(guān)聯(lián)的監(jiān)測點以便檢查所述第一表達式是否成立。
[0008]根據(jù)本發(fā)明的實施例,調(diào)試器能夠自動地添加監(jiān)測點,從而以有效且高效的方式發(fā)現(xiàn)導致變量值異常的根源。本發(fā)明的其他特征和優(yōu)點將通過下文描述而變得容易理解。
【附圖說明】
[0009]通過結(jié)合附圖對本發(fā)明示例性實施方式進行更詳細的描述,本發(fā)明的上述以及其它目的、特征和優(yōu)勢將變得更加明顯其中:
[0010]圖1示出了適于用來實現(xiàn)本發(fā)明實施例的示例性計算機系統(tǒng)/服務(wù)器的示意性框圖;
[0011]圖2示出了包含待跟蹤變量的程序代碼片段的示意圖;
[0012]圖3示出了根據(jù)本發(fā)明實施例的用于程序調(diào)試中的變量跟蹤的方法的示意性流程圖;
[0013]圖4示出了根據(jù)本發(fā)明實施例的用于程序調(diào)試中的變量跟蹤的方法的示意性流程圖;
[0014]圖5示出了利用根據(jù)本發(fā)明的實施例進行處理的程序代碼片段的示意圖;
[0015]圖6示出了包含循環(huán)結(jié)構(gòu)的程序代碼片段的示意圖;以及
[0016]圖7示出了根據(jù)本發(fā)明實施例的用于程序調(diào)試中的變量跟蹤的系統(tǒng)的示意性框圖。
[0017]在附圖中,相同或相似的標號被用來表示相同或相似的元素。
【具體實施方式】
[0018]下面將參照附圖更詳細地描述本公開的優(yōu)選實施方式。雖然附圖中顯示了本公開的優(yōu)選實施方式,然而應(yīng)該理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施方式所限制。相反,提供這些實施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整地傳達給本領(lǐng)域的技術(shù)人員。
[0019]圖1示出了適于用來實現(xiàn)本發(fā)明實施方式的示例性計算機系統(tǒng)/服務(wù)器12的方框圖。圖1顯示的計算機系統(tǒng)/服務(wù)器12僅僅是一個示例,不應(yīng)對本發(fā)明實施例的功能和使用范圍帶來任何限制。
[0020]如圖1所示,計算機系統(tǒng)/服務(wù)器12以通用計算設(shè)備的形式表現(xiàn)。計算機系統(tǒng)/服務(wù)器12的組件可以包括但不限于:一個或者多個處理器或者處理單元16,系統(tǒng)存儲器28,連接不同系統(tǒng)組件(包括系統(tǒng)存儲器28和處理單元16)的總線18。
[0021]總線18表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲器總線或者存儲器控制器,外圍總線,圖形加速端口,處理器或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。舉例來說,這些體系結(jié)構(gòu)包括但不限于工業(yè)標準體系結(jié)構(gòu)(ISA)總線,微通道體系結(jié)構(gòu)(MAC)總線,增強型ISA總線、視頻電子標準協(xié)會(VESA)局域總線以及外圍組件互連(PCI)總線。
[0022]計算機系統(tǒng)/服務(wù)器12典型地包括多種計算機系統(tǒng)可讀介質(zhì)。這些介質(zhì)可以是任何能夠被計算機系統(tǒng)/服務(wù)器12訪問的可用介質(zhì),包括易失性和非易失性介質(zhì),可移動的和不可移動的介質(zhì)。
[0023]系統(tǒng)存儲器28可以包括易失性存儲器形式的計算機系統(tǒng)可讀介質(zhì),例如隨機存取存儲器(RAM) 30和/或高速緩存存儲器32。計算機系統(tǒng)/服務(wù)器12可以進一步包括其它可移動/不可移動的、易失性/非易失性計算機系統(tǒng)存儲介質(zhì)。僅作為舉例,存儲系統(tǒng)34可以用于讀寫不可移動的、非易失性磁介質(zhì)(圖1未顯示,通常稱為“硬盤驅(qū)動器”)。盡管圖1中未示出,可以提供用于對可移動非易失性磁盤(例如“軟盤”)讀寫的磁盤驅(qū)動器,以及對可移動非易失性光盤(例如⑶-ROM,DVD-ROM或者其它光介質(zhì))讀寫的光盤驅(qū)動器。在這些情況下,每個驅(qū)動器可以通過一個或者多個數(shù)據(jù)介質(zhì)接口與總線18相連。存儲器28可以包括至少一個程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個)程序模塊,這些程序模塊被配置以執(zhí)行本發(fā)明各實施例的功能。
[0024]具有一組(至少一個)程序模塊42的程序/實用工具40,可以存儲在例如存儲器28中,這樣的程序模塊42包括-但不限于-操作系統(tǒng)、一個或者多個應(yīng)用程序、其它程序模塊以及程序數(shù)據(jù),這些示例中的每一個或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實現(xiàn)。程序模塊42通常執(zhí)行本發(fā)明所描述的實施例中的功能和/或方法。
[0025]計算機系統(tǒng)/服務(wù)器12也可以與一個或多個外部設(shè)備14 (例如鍵盤、指向設(shè)備、顯示器24等)通信,還可與一個或者多個使得用戶能與該計算機系統(tǒng)/服務(wù)器12交互的設(shè)備通信,和/或與使得該計算機系統(tǒng)/服務(wù)器12能與一個或多個其它計算設(shè)備進行通信的任何設(shè)備(例如網(wǎng)卡,調(diào)制解調(diào)器等等)通信。這種通信可以通過輸入/輸出(I/O)接口 22進行。并且,計算機系統(tǒng)/服務(wù)器12還可以通過網(wǎng)絡(luò)適配器20與一個或者多個網(wǎng)絡(luò)(例如局域網(wǎng)(LAN),廣域網(wǎng)(WAN)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器20通過總線18與計算機系統(tǒng)/服務(wù)器12的其它模塊通信。應(yīng)當明白,盡管圖中未示出,可以結(jié)合計算機系統(tǒng)/服務(wù)器12使用其它硬件和/或軟件模塊,包括但不限于:微代碼、設(shè)備驅(qū)動器、冗余處理單元、外部磁盤驅(qū)動陣列、RAID系統(tǒng)、磁帶驅(qū)動器以及數(shù)據(jù)備份存儲系統(tǒng)等。
[0026]下面將詳細描述本發(fā)明實施例的機制和原理。除非特別聲明,在下文和權(quán)利要求中使用的術(shù)語“基于”表示“至少部分地基于”。術(shù)語“包括,,表示開放性包括,即“包括但不限于”。術(shù)語“多個”表示“兩個或更多”。術(shù)語“一個實施例”表示“至少一個實施例”。術(shù)語“另一實施例,,表示“至少一個另外的實施例”。其他術(shù)語的定義將在下文描述中給出。
[0027]此外,在此使用的“第一”、“第二”等術(shù)語僅僅是為了區(qū)分所指代的對象,并未意在施加順序、時間、空間或者任何其他方面的限制。例如,代碼中的“第一表達式”并非必須是代碼中的首個表達式,也未必位于“第二表達式”之前。而且,除非特別聲明,這樣的術(shù)語并非一定指代不同的對象。例如,“第一表達式”和“第二表達式”可以是不同的表達式,也可以是相同的表達式。
[0028]為了更清楚地闡釋本發(fā)明的機制和原理,下面將首先描述在傳統(tǒng)方案中如何實現(xiàn)對變量的跟蹤。參見圖2,以C++語言編寫的程序代碼片段200包含函數(shù)p0lice_chaSe210、sentence 220 和 find_suspect 230。函數(shù) sentence 以兩個整型(int)變量 guy 和 year為參數(shù)。在函數(shù)police_chase 210中,以整型變量suspect為參數(shù)調(diào)用函數(shù)sentence 220。
[0029]在函數(shù)sentence 220中,在語句225處設(shè)置監(jiān)測點以便檢查變量guy的值大于或者等于O
當前第1頁1 2 3 4 5 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
承德市| 江山市| 盱眙县| 淳安县| 台山市| 汝城县| 江阴市| 武宣县| 株洲市| 古浪县| 凤凰县| 科技| 裕民县| 临沭县| 闽清县| 景德镇市| 日照市| 湖口县| 日照市| 林州市| 广州市| 石阡县| 兰坪| 辽宁省| 庆安县| 定陶县| 金乡县| 汨罗市| 新蔡县| 土默特左旗| 阜阳市| 武邑县| 平定县| 富锦市| 安徽省| 璧山县| 天峻县| 上林县| 衡东县| 塘沽区| 郁南县|