新四季網

一種調試方法和調試器的製作方法

2023-05-17 06:42:26 1

專利名稱:一種調試方法和調試器的製作方法
技術領域:
本發明涉及計算機應用開發領域,更具體地,本發明涉及一種調 試方法和調試器。
背景技術:
在整個應用程式開發周期中,調試是 一 項繁瑣但卻必不可少的 任務。在調試過程中,編程人員藉助於調試器來跟蹤程序的執行過 程,以便確定有問題代碼的位置,進而對程序代碼進行修正以消除錯誤。
在調試時,通常會出現需要強制執行指令的情況。例如,當程
序執行到諸如if、 while、 case、 switch等的條件語句時,用戶(即編 程人員)可能懷疑程序的問題出現在該條件語句中的某個分支,這 時用戶會期望進入期望的分支來進行調試。在這種情況下,通常用 戶需要通過改變條件語句的條件表達式中的變量值,來使程序執行 進入到期望的分支。
在變量較少且變量之間的邏輯關係較為簡單的情況下,用戶可 以容易地通過改變這些變量的值而進入期望的分支。然而,在很多 情況下,條件表達式中有很多變量,並且變量之間的關係也非常復 雜,甚至還可能涉及到複雜的函數。這時,想要確定應該如何設置 變量就變得非常困難,尤其是對於諸如過程語言/接口指令(Program language/Machine Instruction, PL/MI) —些老舊代碼。通常用戶花費 了大量精力來改變變量,但是卻沒有進入期望的分支。這時要想進 入期望的分支,用戶就必須重新運行程序,並再次嘗試改變變量的 值。
在現有技術中,已經出現一些允許程序執行退回的調試器,這為用戶提供了改變變量值的機會,同時無需重新運行程序。但是, 由於變量過多且變量關係過於複雜,因此用戶仍然需要嘗試很多次, 這非常麻煩。另外,在進入期望的分支之前,用戶可能已經嘗試大 量的變量,所以重建用戶所處的確切狀態很困難,這要求用戶在每 次程序執行退回時,將已經被改變的值恢復到原來的值。
但是,出於系統完整性的原因,現有技術中更多的調試器並不
允許上述的退回操作,諸如IBM System i系列機器就不允許這種退 回操作。其原因在於,允許退回操作意味著允許存在不為編譯器所 知的控制流,這可能會導致系統完整性問題。因此在這種情況下, 用戶只能通過重新運行程序來獲得再次改變變量的值的機會,以便 進入期望的分支。
因此在現有技術中,在任何情況下,當需要強制執行指令時, 只能由用戶以手動方式來改變變量,並且需要反覆進行很多次。而 且,在每次重新改變變量時,通常還需要重新運行程序,這是非常 令人煩惱的過程。
為此,非常需要一種改進的調試方法和調試器,以使用戶從上 述反覆進行的操作中解脫出來。

發明內容
有鑑於此,本發明提供了一種改進的調試方法和調試器,使得 程序強制進入用戶期望的分支而無需用戶改變變量的值。
在本發明的第一方面中,提供了一種調試方法,包括在調試 過程中接收強制執行分支的用戶命令;和響應於所述用戶命令,自 動地強制執行用戶指定的分支。
在本發明的一個實施例中,所述強制執行步驟包括直接修改 控制分支的處理器狀態字,以使得自動地強制執行用戶指定的分支。
在本發明的另一實施例中,所述強制執行步驟包括間接修改 控制分支的處理器狀態字,以使得自動地強制執行用戶指定的分支。
在本發明的又 一 個實施例中,所述間接修改處理器狀態字步驟
6包括為所述條件語句添加強制分支變量;和修改所述強制分支變 量,以便強制進入用戶指定的分支。
在本發明的再 一 個實施例中,所述間接修改處理器狀態字步驟 包括在編譯過程中,獲取與所述條件表達式所涉及的變量以及它 們之間的邏輯關係;對所述變量和邏輯關係進行分析,以得到為進 入用戶指定的分支而修改變量的方案;和根據所述得到的方案修改 所述變量,以使得自動地強制執行用戶指定的分支。
在本發明的第二方面中,提供了一種調試器,包括命令接收 單元,配置用於在調試過程中接收強制執行分支的用戶命令;和強 制分支單元,配置用於響應於所述用戶命令,自動地強制執行用戶 指定的分支。
根據本發明的調試方法和調試器,可以自動地強制執行用戶期 望的指令,而無需用戶反覆改變變量的值,從而顯著地降低了調試 的任務量,為用戶帶來了更好的體驗,並且減少了調試時間。


通過結合附圖對本發明的具體實施例進行詳細的描述,本發明 的上述以及其他方面和優勢將更加明顯。
在本發明的附圖中,相同的附圖標識表示相同或者類似的部件, 在附圖中
圖1示意性地示出了根據本發明一個實施例的調試方法的流程
圖2示意性地示出了根據本發明另一實施例的調試方法的流程
圖3示意性地示出了根據本發明又一實施例的調試方法的流程
圖4示意性地示出了根據本發明再一實施例的調試方法的流程
圖5示出了在根據本發明的調試方法中使用的語法樹的一個實例;
圖6示意性地示出了根據本發明一個實施例的調試器的結構方 框圖7示意性地示出了根據本發明另一實施例的調試器的結構方 框圖8示意性地示出了根據本發明又一實施例的調試器的結構方 框圖9示意性地示出了根據本發明再一實施例的調試器的結構方 框圖;和
圖10示意性地示出了可以實現根據本發明的實施例的計算設備 的結構方框圖。
具體實施例方式
在下文中,將參考附圖通過實施例對本發明提供的調試方法以 及調試器進行詳細的描述。
首先,將參考圖1來描述根據本發明的調試方法。圖1示意性 地示出了根據本發明 一 個實施例的調試方法的流程圖。
在步驟101,在調試過程中接收強制執行分支的用戶命令。
調試時,程序通常會在用戶設定的斷點處暫停。這時,可以通 過諸如StepOver、 Step In等單步執行功能來一步一步地執行斷點處 以及其後的代碼,以便跟蹤程序的執行。在本發明的實施例中,如 果斷點所指定的語句是條件語句,諸如像是if語句、while語句的二 分支語句或者像是switch語句或case語句的多分支語句,則在用戶 期望強制執行分支時,用戶可以輸入用於強制執行分支的命令,以 指定其期望執行的分支。
例如,在一個實施例中,在支持命令行調試的調試環境中,可 以接收用戶以命令行形式發出的用戶命令。例如,用戶可以在調試 環境中以命令行方式鍵入調試命令,並在調試命令的參數中指定期 望執行的分支,諸如True分支、False分支,或者case、 switch語句中的特定分支。
在另一實施例中,可以為用戶提供更加友好的界面,諸如調試 菜單中的菜單項、位於工具條上的圖標按鈕、組件板上組件等。例
^口,可以才是供i者^口 StepTrue、 StepFalse 、 StepCase等類f乂於Step Over、 Stepln等菜單項,以供用戶選擇使用。在這種情況下,用戶只需點 擊所提供菜單中的菜單項StepTrue、 StepFalse或者StepCase,選擇 自己期望執行的操作即可。這種方式與通過命令行來發出用戶命令 不同,該方式簡單、方便,無需用戶記憶調試命令及其使用方法。
接著,在步驟102,響應於所述用戶命令,自動地強制執行用戶 指定的分支。
在接收到強制執行指令的用戶命令之後,調試器強制執行用戶 指定的分支,而無需用戶再進行任何其他操作。
本發明的調試方法通過自動地強制執行用戶指定的分支,使得 無需用戶反覆改變變量的值,從而顯著地降低了調試的任務量,為 用戶帶來了更好的體驗,並且減少了調試時間。
自動地強制執行用戶指定的分支可以通過多種方式實現。例如, 可以通過直接改變處理器狀態字來實現,或者通過添加強制分支變 量並改變所述強制分支變量、通過自動地改變條件語句的條件表達 式中所涉及的變量而間接地改變處理器狀態字來實現。在中央處理 器中,狀態寄存器通常存儲了用於呈現中央處理器運行程序的狀態 的若干標誌位,諸如零標誌位、負標誌位、溢出標誌位、進位或借 位標誌位、關中斷標誌位以及其他機器工作狀態標誌位。儘管在不 同機器對於狀態位的規定並不完全相同,但所有的中央處理器都將 這些標誌位統稱為處理器狀態字或者程序狀態字。特別需要說明的 是,在彙編級別,這些處理器狀態字總是控制分支的執行。因此,
指定的分支。
下面,將首先描述通過直接改變處理器狀態字來實現的本發明 調試方法的實施例。參考圖2,圖2示意性地示出了根據本發明另一實施例的調試方 法的流程圖。需要說明的是,為了清楚起見,圖2僅僅示出了圖1 中強制執行用戶指定分支的步驟102的流程的一個實施例。
首先,在步驟201,在編譯過程中,確定各個分支的偏移量。由 於通過為跳轉指令提供偏移量,可以在彙編級別控制程序的跳轉, 因此需要得到條件語句各個分支的偏移量。
接著,在步驟202,將所述處理器狀態字修改為與用戶指定的分 支的偏移量對應的狀態。調試器得到各個分支的偏移量後,查找用 戶指定分支的偏移量,並利用找到的偏移量來設置處理器狀態字, 以使程序執行進入到用戶指定的分支。例如,可以將找到的偏移量 提供給跳轉指令,並且通過跳轉指令來自動修改所述處理器狀態字。 此外,根據需要,調試器還可以通過CPU提供的其他機器指令來相 應地修改處理器狀態字中的與該強制執行相關的信息,諸如在跳轉 過程中需要屏蔽中斷時,可以利用機器指令來設置處理器狀態字中 的中斷屏蔽位。 -
由於處理器狀態字控制著分支的執行,因此處理器狀態字被修 改為與指定分支的偏移量對應的狀態之後,程序就可以在步驟203 自動地進入用戶指定的分支。
圖2中示出的實施例直接修改了在彙編級別控制著分支的處理 器狀態字而在彙編級別實現程序跳轉的改變,藉此自動地強制執行 用戶指定的分支。
接下來,將描述通過間接改變處理器狀態字來實現的本發明調 試方法的實施例。
參考圖3,圖3示意性地示出了根據本發明又一實施例的調試方 法的流程圖。與圖2類似,圖3僅僅示出了圖1中強制執行用戶指 定分支的步驟102的流程的一個實施例。
在步驟301,為所述條件語句添加強制分支變量。為了能夠強制 執行用戶指定的分支,可以為條件語句添加強制分支變量,以便通 過該強制分支變量來控制條件語句中條件表達式的值。
10在 一 個實施例中,可以在編譯期間將用於控制條件表達式的值 的強制分支變量直接添加到條件語句中的條件表達式中。在這種情 況下,由編譯器來自動添加強制分支變量,用戶並不知道該強制分 支變量的添加操作,因此該操作對於用戶是透明的。在編譯期間, 編譯器可以根據條件語句中的原始條件表達式生成帶有強制分支變 量的條件表達式,並利用所生成的條件表達式來替換條件語句中的 原始條件表達式,從而實現所述強制分支變量的添加。
例如,對於if、 while等二分支條件語句,如果原始表達式用 original—condition來表示,則在編譯期間,可以生成用於替換原始條 件表達式的下列條件表達式
((original—condition ) || ForceTureVar ) && ForceFalseVar 其中"II"為邏輯或運算和"&&"為邏輯與運算,ForceTureVar和 ForceFalseVar都是布爾變量,ForceTureVar是True強制分支變量, ForceFalseVar是False強制分支變量。優選地,將ForceTureVar的 初始值設置為0 (即False),並且將ForceFalseVar的初始值設置為 1 (即True),以使得所述原始條件表達式的邏輯值不受到所添加的 強制分支變量的影響。
另外,對於case、 switch等多分支條件語句,如果原始條件表達 式用original—condition來表示,則生成的用於替換原始條件表達式 的條件表達式可以是
(original—condition )*ForceCtrlVarl+( ForceCaseVar )* ForceCtrlVar2 其中"*"為乘法運算,"+"為加法運算,ForceCaseVar是多分支 強制分支變量,其數據類型與原始條件表達式original—condition的 結果值的數據類型相同;ForceCtrlVarl和ForceCtrlVarl都是布爾變 量,它們同樣是強制分支變量,用於控制原始表達式 original—condition和多分支強制分支變量ForceCaseVar中哪一個起 作用。優選地,將ForceCtrlVarl設置的初始值為1,並且將 ForceCtrlVar2的初始值設置為0,以使得所述原始條件表達式的值不 受所添加的強制分支變量的影響。
ii在另一個實施例中,如果程序語言支持宏定義,則可以通過宏
定義來實現上述的強制分支變量的添加。下面是c語言形式的宏定 義的一個實例。
射fdef DEBUG
糾fndef CONDITIONAL—DEBUG #def CONDITIONAL—DEBUG
Volatile int ForceTureVar=0 〃強制進入true分支的控制變量
Volatile int ForceFalseVar= 1〃強制進入false分支的控制變量 Volatile int ForceCtrlVar 1 = 1〃進入默認case分支的控制變量 Volatile int ForceCtrlVar2=0〃進入指定case分支的控制變量 Volatile int ForceCaseVar 〃指定case分支的控制變量
#define if(x) (((x) || ForceTureVar)&& ForceFalseVar) #define while(x) (((x) || ForceTureVar)&& ForceFalseVar)
#define switch(x) ((original—condition)*ForceCtrlVarl+(ForceCaseVar)* ForceCtrlVar2)
#endif
#endif
通過上述宏定義,編譯器在進行編譯時通過文本替換將原始條 件表達式替換為帶有強制分支變量的條件表達式。通過在加入該宏 定義,可以在編譯時自動完成強制分支變量的添加,而無需修改編 譯器和調試器。
該宏定義也可以過代碼編輯器添加到原始碼中。可以在代碼編 寫的過程中,自動將該宏定義包含在文件中,特別是頭文件中。此 外,還可以通過手工鍵入上述代碼來實現強制分支變量的添加。
然後,在步驟302,修改所述強制分支變量,以便強制進入用戶 指定的分支。
當從用戶接收到強制執行分支的命令時,調試器根據用戶命令 來修改所述強制分支變量。例如,對於if、 while等二分支條件語句, 當用戶命令指示要求執行True分支時,調試器則將ForceTureVar設 置為1;相反,當用戶命令指示要求執行False分支時,調試器則將ForceFalseVar設置為0。而對於多分支條件語句,諸如switch、 case 等,調試器可以將ForceCaseVar設置為用戶指定分支的常量表達式, 將ForceCtrlVarl設置為0,並且ForceCtrlVar2設置為1,從而不論 原始條件表達式的值如何都使得ForceCaseVar決定多分支語句中條 件表達式的值。
在設置了所述強制分支變量之後,條件表達式的值將為成為用 戶期望的值,於是程序執行進入用戶指定的分支。
接著,優選地在步驟303,在強制進入用戶指定的分支後,將所 設置的強制分支變量設置回所述初始值,以便不使隨後的程序執行 受到所述強制分支變量的影響。需要說明的是,可以在程序執行進 入用戶指定的分支之後的任何適當時刻,將所設置的強制分支變量 設置回所述初始值,例如在進入所述用戶指定的分支時、在要離開 用戶指定的分支時、或者前述兩個時刻中間的任何時刻。
圖3中示出的實施例通過為條件語句添加強制分支變量以及修 改所述強制變量而改變了條件表達式的值,從而自動地強制執行用 戶指定的分支。
需要理解的是,雖然在上述的實施例中,並未直接改變處理器 狀態字,然而對強制分支變量的改變,卻間接地在彙編級別改變了 處理器狀態字,從而使得自動地強制執行用戶指定的分支。因此這 是一種間接改變處理器狀態字的方式。
此外,圖4還示意性地示出了根據本發明的再一實施例的調試 方法的流程圖。與圖2和圖3類似,圖4僅僅示出了圖1中強制執 行用戶指定分支的步驟102的流程的一個實施例。
首先在步驟401,在編譯過程中,獲取與所述條件表達式所涉及 的變量以及它們之間的邏輯關係相關的信息。
在編譯過程中,可以根據條件語句的條件表達式獲取其中的變 量以及這些變量之間的關係。例如,可以形成表示變量以及這些變 量之間的關係的語法樹。為了便於理解,下面將通過一個簡單的實 例來描述。
13舉例來講,對於條件表達式"x>y||z,,,在編譯器期間,可以生 成如圖5所示的代表該條件表達式的語法樹。如圖5所示,語法樹 包括5個節點,即節點501-505,其中節點501和502是代表變量之 間的關係的運算符"II"和">,,;節點503、 504和505是條件表達 式所涉及的變量x、 y和z。從圖5可以看出,所示的語法樹可以是 二叉樹,節點501是根節點,並且根節點501包括兩個子樹,即由 節點502、 503和504構成的左子樹以及由節點505構成的右子樹。
接著,在步驟402,對所述變量和邏輯關係進行分析,以得到為 進入用戶指定的分支而修改變量的方案。
在條件表達式運算時,各個運算符都具有一定的優先級,例如 邏輯運算符"II"和"&&,,的優先級低於">,,、"<,,、"=="等
關係運算符,而"!"高於算術運算符。例如,對於圖5所示的語 法樹,其中">,,是關係運算符,其運算優先級高於邏輯運算符"II", 即運算時首先進行關係運算">",然後才進行邏輯運算"II"。因 此,在執行分析時,可以基於這種性質採用適當的策略進行分析, 諸如可以以與優先級相反的順序進行分析。例如,對於圖5所示的 語法樹,可以從運算優先級低的邏輯運算符"II"開始。
下面,將以圖5的語法樹為例來描述變量分析的過程。需要理 解的是,圖5描述的僅僅是一個簡單的實例,而實際應用中,條件 表達式所涉及變量及其變量之間的關係可能要比該實例複雜得多。
參考圖5,對於圖5中的語法樹,如果用戶期望進入True分支, 則首先從根節點501對邏輯運算符"II"進行分析,根據邏輯運算符 "l卩,的性質,要使結果為1,則需要使由節點502、 503和504構成 的左子樹或者由節點505構成的右子樹中任何一個的運算值為1。因 此,可以設法使左子樹的運算值為1,或者使右子樹的運算值為1。 為此,可以選擇左子樹進行進一步的分析。對於左子樹,節點503 和節點504所表示的變量x和y之間的關係是">",因此要使其運 算值為1,則需要滿足x^,藉此得到一種變量設置方案,即分別設 置x、 y使其滿足x大於y。同樣,可以選擇右子樹來進行進一步的
14分析。對於右子樹,只有一個代表變量z的節點505,因此要使其運 算值為1,只需使z為l即可,這樣也可以得到一種變量設置方案。 優選地,在可以對兩個子樹中的任何 一 個進行進 一 步分析的情 況下,在進一步分析之前,可以對分析左子樹、右子樹的工作量進 行估計,並選擇工作量較小的子樹進行分析。例如,統計左子樹、
右子樹的節點數目,並選擇節點數目較少的子樹來分析。或者,可 以根據其中是否涉及函數,或者是否包含有能夠決定整體或者局部
邏輯值的變量來進行選擇。備選地,在這種情況下,還可以指定總 是對左子樹或者右子樹其中一個進行分析。
另一方面,如果用戶期望進入False分支,則首先分析邏輯運算 符"II",根據邏輯運算符"II"的性質,要使結果為0,則需要左子 樹或者右子樹中任何一個的運算值都為0。然後,分別對左子樹和右 子樹進行進一步的分析。對於左子樹,要使其運算值為0,則需要滿 足x〈-y。而對於右子樹,要使其運算值為0,只需使z為0。因此, 可以得到變量設置的方案,即設置x、 y使其滿足x<=y,並且將z 設置為0。
接著,在步驟403,根據所述得到的方案修改條件語句中所涉及 的變量,以使得自動地強制執行用戶指定的分支。
在強制進入用戶指定的分支後,可以將已被設置的變量設置回 原來的值,以便變量的設置不會影響後續程序的執行。
這些變量之間的關係進行分析來得到修改所述變量的方案以及根據 所得的方案自動修改變量,來自動地強制執行用戶指定的分支。
雖然在上述的實施例中,並未直接改變處理器狀態字,然而改 變條件表達式所涉及的變量,以間接的方式在彙編級別改變處理器 狀態字,從而使得自動地強制執行用戶指定的分支。因此這是一種 間接改變處理器狀態字的方式。
需要指出的是,在與圖4相關的實施例的描述中,通過語法樹 來描述變量及其之間的關係,但是並發明並不限於此,本發明還可以利用其他任何適當的結構來描述這些變量及其之間的關係。另夕卜, 還需要指出的是,本發明中給出的變量分析的策略僅僅是一種示例, 本發明並不局限於此,還可以使用其他任何適當的策略來分析變量。
下面,將參考圖6-9對本發明提供的調試器進行詳細的描述。需 要說明的是,根據本發明的調試器可以是專用的調試工具。根據本 發明的調試器還可以是集成開發環境,包括編譯器、編輯器以及調 試器。
參考圖6,圖6示出了根據本發明一個實施例的調試器的結構方 框圖。圖6中示出的調試器600包括命令接收單元601和強制分支 單元602,其中命令接收單元601配置用於在調試過程中接收強制執 行分支的用戶命令,強制分支單元602,配置用於響應於所述用戶命 令,自動地強制執行用戶指定的分支。
本發明的調試器通過強制分支單元602自動地強制執行用戶指 定的分支,使得無需用戶反覆改變變量的值,從而顯著地降低了調 試的任務量,為用戶帶來了更好的體驗,並且減少了調試時間。
接著參考圖7,圖7示出了根據本發明另一實施例的調試器700 的結構方框圖。圖7中示出的調試器700包括命令接收單元701和 強制分支單元702,其中命令接收單元701與圖6中的命令接收單元 601相同,其配置用於在調試過程中接收強制執行分支的用戶命令。 而與圖6的調試器600不同的是,強制分支單元702包括偏移量確 定單元703、處理器狀態字修改單元704和分支執行單元705。在該 實施例中,偏移量確定單元703配置用於在編譯過程中,確定各個 分支的偏移量;處理器狀態字修改單元704配置用於將所述處理器 狀態字修改為與用戶指定的分支的偏移量對應的狀態。該實施例的 偏移量確定單元703和處理器狀態字修改單元704的具體操作可以 參考與圖2相關的描述。
圖7中示出的調試器700通過直接改變在彙編級別控制分支的 處理器狀態字,使得自動地強制執行用戶指定的分支。
下面,將描述通過間接修改處理器狀態字來自動強制執行用戶指定分支的調試器的實施例。
參考圖8,圖8示出了根據本發明的另一實施例的調試器800的 結構方框圖。圖8中示出的調試器800包括命令接收單元801和強 制分支單元802,其中命令接收單元801與圖6中的命令接收單元 601相同,其配置用於在調試過程中接收強制執行分支的用戶命令。 而與圖6所示的調試器600不同的是,強制分支單元802包括強制 分支變量添加單元803和強制分支變量修改單元804。在該實施例 中,強制分支變量添加單元803配置用於為所述條件語句添加強制 分支變量,強制分支變量修改單元804配置用於修改所述強制分支 變量,以便強制進入用戶指定的分支。
在一個實施例中,強制分支變量添加單元803在編譯器間將所 述強制分支變量添加到條件語句的條件表達式中。
在另一實施例中,強制分支變量添加單元803通過宏定義來實 現強制分支變量的添加。因此在該實施例中,強制分支變量添加單 元803可以在代碼編輯器中實現。
優選地,強制分支變量添加單元803將所述強制分支變量的初 始值設置成使得所述條件表達式的值不受影響。優選地,在進入所 述用戶指定的分支後,可以由強制分支變量修改單元804將所述強 制分支變量設置回所述初始值,以使隨後的程序執行不受影響。
該實施例的強制分支變量添加單元803和強制分支變量修改單 元804的具體操作可以參考與圖3相關的描述。
圖8中示出的調試器800通過為條件語句添加強制分支變量並 修改所述強制分支變量而間接地改變在彙編級別控制分支的處理器 狀態字,從而使得自動地強制執行用戶指定的分支。
下面將參考圖9,圖9示出了根據本發明的另一實施例的調試器 900的結構方框圖。圖9中示出的調試器900包括命令接收單元901 和強制分支單元902,其中命令接收單元901與圖6中的命令接收單 元601相同,其配置用於在調試過程中接收強制執行分支的用戶命 令。而與圖6所示的調試器600不同的是,強制分支單元902包括變量信息獲取單元903、變量分析單元904和變量修改單元905。在 該實施例中,變量信息獲取單元903配置用於在編譯過程中,獲取 與所述條件表達式所涉及的變量以及它們之間的邏輯關係;變量分 析單元904配置用於對所述變量和邏輯關係進行分析,以得到為進 入用戶指定的分支而修改變量的方案;變量修改單元905配置用於 根據所述得到的方案修改所述變量,以使得自動地強制執行用戶指 定的分支。該實施例的變量信息獲取單元903、變量分析單元904 和變量修改單元905的具體操作可以參考與圖4相關的描述。
圖9中示出的實施例通過對條件表達式所涉及的變量及這些變 量之間的關係進行分析來得到修改所述變量的方案以及根據所得的 方案自動修改變量,來自動地強制執行用戶指定的分支。
下面,將參考圖IO來描述可以實現本發明的計算機設備。圖10 示意性示出了可以實現根據本發明的實施例的計算設備的結構方框 圖。
圖10中所示的計算機系統包括CPU(中央處理單元)1001、RAM (隨機存取存儲器)1002、 ROM(只讀存儲器)1003、系統總線1004、 硬碟控制器1005、鍵盤控制器1006、串行接口控制器1007、並行接 口控制器1008、顯示器控制器1009、硬碟1010、鍵盤1011、串行 外部設備1012、並行外部設備1013和顯示器1014。在這些部件中, 與系統總線1004相連的有CPU 1001、 RAM 1002、 ROM 1003、硬 盤控制器1005、鍵盤控制器1006、串行接口控制器1007、並行接口 控制器1008和顯示器控制器1009。硬碟1010與硬碟控制器1005 相連,鍵盤1011與鍵盤控制器1006相連,串行外部設備1012與串 行接口控制器1007相連,並行外部設備1013與並行接口控制器1008 相連,以及顯示器1014與顯示器控制器1009相連。
圖IO所述的結構方框圖僅僅為了示例的目的而示出的,並非是 對本發明的限制。在一些情況下,可以根據需要添加或者減少其中 的一些設備。
此外,本發明的實施例可以以軟體、石更件或者軟體和石更件的結合來實現。硬體部分可以利用專用邏輯來實現;軟體部分可以存儲 在存儲器中,由適當的指令執行系統,例如微處理器或者專用設計 硬體來執行。
雖然已經參考目前考慮到的實施例描述了本發明,但是應該理 解本發明不限於所公開的實施例。相反,本發明旨在涵蓋所附權利 要求的精神和範圍之內所包括的各種修改和等同布置。以下權利要 求的範圍符合最廣泛解釋,以便包含所有這樣的修改及等同結構和 功能。
權利要求
1.一種調試方法,包括在調試過程中接收強制執行分支的用戶命令;和響應於所述用戶命令,自動地強制執行用戶指定的分支。
2. 根據權利要求1所述的調試方法,自動地強制執行用戶指定 的分支的步驟進 一 步包括直接修改控制分支的處理器狀態字,以使 得自動地強制執行用戶指定的分支。
3. 根據權利要求2所述的調試方法,其中所述直接修改處理器 狀態字包括在編譯過程中,確定各個分支的偏移量;和 將所述處理器狀態字修改為與用戶指定的分支的偏移量對應的 狀態。
4. 根據權利要求1所述的調試方法,自動地強制執行用戶指定 的分支的步驟進一步包括其中間接修改控制分支的處理器狀態字, 以使得自動地強制執行用戶指定的分支。
5. 根據權利要求4所述的調試方法,其中所述間接修改處理器 狀態字包括為所述條件語句添加強制分支變量;和 修改所述強制分支變量,以便強制進入用戶指定的分支。
6. 根據權利要求5所述的調試方法,其中所述添加強制分支變 量包括在編譯期間,將所述強制分支變量添加到所述條件語句中的條 件表達式;或利用宏定義將所述強制分支變量添加到所述條件語句中 的條件表達式。
7. 根據權利要求6所述的調試方法,其中所述宏定義通過代碼 編輯器添加到原始碼中。
8. 根據權利要求5至7任一項所述的調試方法,其中設置所述 強制分支變量的初始值,以使得所述條件表達式的值不受所述強制分支變量的影響。
9. 根據權利要求8所述的調試方法,進一步包括在強制進入所述用戶指定的分支後,將所述強制分支變量設置 回戶斤述^刀始ii。
10. 根據權利要求4所述的調試方法,其中所述間接修改包括 在編譯過程中,獲取與所述條件表達式所涉及的變量以及它們之間的邏輯關係;對所述變量和邏輯關係進行分析,以得到為進入用戶指定的分 支而修改變量的方案;和根據所述得到的方案修改所迷變量,以使得自動地強制執行用 戶指定的分支。
11. 一種調試器,包括命令接收單元,配置用於在調試過程中接收強制執行分支的用 戶命令;和強制分支單元,配置用於響應於所述用戶命令,自動地強制執 行用戶指定的分支。
12. 根據權利要求11所述的調試器,其中所述強制分支單元配 置用於直接修改控制分支的處理器狀態字,以使得自動地強制執行 用戶指定的分支。
13. 根據權利要求12所述的調試器,其中所述強制分支單元配 置包括偏移量確定單元,配置用於在編譯過程中,確定各個分支的偏 移量;和處理器狀態字修改單元,配置用於將所述處理器狀態字修改為 與用戶指定的分支的偏移量對應的狀態。
14. 根據權利要求11所述的調試器,其中所述強制分支單元配 置用於間接修改控制分支的處理器狀態字,以使得自動地強制執行 用戶指定的分支。
15. 根據權利要求14所述的調試器,其中所述強制分支單元包括強制分支變量添加單元,配置用於為所述條件語句添加強制分支變量;和強制分支變量修改單元,配置用於修改所述強制分支變量,以 便強制進入用戶指定的分支。
16. 根據權利要求15所述的調試器,其中所述強制分支變量添加單元在編譯期間將所述強制分支變量添加到所述條件語句中的條件表達式;或所述強制分支變量添加單元利用宏定義將所述強制分支變量添 加到所述條件語句中的條件表達式。
17. 根據權利要求16所述的調試器,其中所述強制分支變量添 加單元在代碼編輯器中實現。
18. 根據權利要求15至17任一項所述的調試器,其中所述強制 分支變量的初始值被設置成使得所述條件表達式的值不受所述強制 分支變量的影響。
19. 根據權利要求18所述的調試器,其中在進入所述用戶指定 的分支後,所述強制分支變量被設置回所述初始值。
20. 根據權利要求14所述的調試器,其中所述強制分支單元包括..變量信息獲取單元,配置用於在編譯過程中,獲取與所述條件 表達式所涉及的變量以及它們之間的邏輯關係;變量分析單元,配置用於對所述變量和邏輯關係進行分析,以 得到為進入用戶指定的分支而修改變量的方案;和變量修改單元,配置用於根據所述得到的方案修改所述變量, 以使得自動地強制執行用戶指定的分支。
全文摘要
本發明提供了一種調試方法和一種調試器。所述調試方法包括在調試過程中接收強制執行分支的用戶命令;和響應於所述用戶命令,自動地強制執行用戶指定的分支。在本發明的一個實施例中,通過直接修改控制分支的處理器狀態字,來自動地強制進入用戶指定的分支。在本發明的另一實施例中,通過間接修改處理器狀態字,來自動地強制進入用戶指定的分支。通過自動地強制執行用戶指定的分支,本發明的方法使得無需用戶反覆改變條件表達式中的變量的值,從而顯著地降低了調試的任務量,為用戶帶來了更好的體驗,並且減少了調試時間。
文檔編號G06F11/36GK101561779SQ20081009169
公開日2009年10月21日 申請日期2008年4月14日 優先權日2008年4月14日
發明者C·L·貝茨, 波 塗 申請人:國際商業機器公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀