專利名稱:一種在源程序?qū)哟螌崿F(xiàn)運算符單步調(diào)試的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及了計算機程序調(diào)試技術(shù)領(lǐng)域,主要是一種在源程序?qū)哟螌崿F(xiàn)運算符單
步調(diào)試的方法。
背景技術(shù):
源程序調(diào)試是用來幫助用戶在源程序?qū)哟紊细櫝绦虻膱?zhí)行流程,定位程序故障 的一個常用手段和方法。 目前的源程序調(diào)試器,在編譯源程序時,記錄和存儲源程序語句的源程序文件的 源文件名和行號,在源程序?qū)哟握{(diào)試程序時,如果執(zhí)行調(diào)試器的單步命令或通過設(shè)置斷點 方式,可以從程序的開始運行被調(diào)試程序,使執(zhí)行進(jìn)程暫停在這個程序的第一行有效代 碼中,編輯窗口中的這行源代碼的開始處用一個箭頭來標(biāo)記執(zhí)行到的這一代碼行。例如 Microsoft Visual C++調(diào)試器就是用一個黃色的箭頭來標(biāo)記當(dāng)前將要執(zhí)行的代碼行。
如果繼續(xù)執(zhí)行調(diào)試器的單步命令,調(diào)試器執(zhí)行這個程序當(dāng)前代碼行,然后執(zhí)行進(jìn) 程又暫停下來,編輯窗口中的這行源代碼開始處的箭頭就會移動到下一個代碼行。
如果每行代碼是一個源程序語句,用戶就可以在源程序語句級別對程序的執(zhí)行流 程進(jìn)行跟蹤,查看執(zhí)行過程中各個變量的值。 在源程序代碼的編寫時,一條語句可以包含多個表達(dá)式,每個表達(dá)式可以是多個 運算符和其操作數(shù)的有效組合。 在調(diào)試程序時,操作者有時希望能夠在源程序?qū)哟慰梢暤馗櫛磉_(dá)式中各個運算 符和它的相應(yīng)操作數(shù)求值計算的執(zhí)行流程,或者在源程序?qū)哟慰梢暤馗櫿Z句中多個表達(dá) 式求值計算的執(zhí)行流程。而目前的源程序調(diào)試器在解決這類問題時存在困難。
發(fā)明內(nèi)容
本發(fā)明的目的是針對上述現(xiàn)有源程序調(diào)試技術(shù)缺陷,提供一種在源程序?qū)哟螌崿F(xiàn) 運算符單步調(diào)試的方法。 實現(xiàn)本發(fā)明目的采用的技術(shù)方案為在解析或編譯源程序時,記錄和存儲表達(dá)式 中運算符和相應(yīng)操作數(shù)在源程序中的位置數(shù)據(jù);當(dāng)用戶使用運算符單步調(diào)試命令時,調(diào)試 器執(zhí)行以下步驟, 步驟1,當(dāng)用戶使用運算符單步調(diào)試命令時,啟動執(zhí)行調(diào)試對象程序進(jìn)程,通過調(diào) 試對象程序進(jìn)程實現(xiàn)以下步驟1. 1和步驟1. 2, 步驟1. l,判斷調(diào)試器是否執(zhí)行調(diào)試對象程序進(jìn)程至一個運算符,若是則對于調(diào) 試器執(zhí)行調(diào)試對象程序進(jìn)程所至的運算符,獲得已存儲的該運算符和相應(yīng)操作數(shù)的位置數(shù) 據(jù); 步驟1. 2,根據(jù)位置數(shù)據(jù)把該運算符和相應(yīng)操作數(shù)加上標(biāo)記,并把加上標(biāo)記后的運 算符和相應(yīng)操作數(shù)的源程序代碼在調(diào)試器窗口中顯示給用戶; 步驟2,在步驟1. 2執(zhí)行完畢后暫停調(diào)試對象程序進(jìn)程,等待用戶要求繼續(xù)執(zhí)行運算符單步調(diào)試命令; 步驟3,當(dāng)用戶要求繼續(xù)執(zhí)行運算符單步調(diào)試命令時,執(zhí)行加上標(biāo)記后的運算符和 相應(yīng)操作數(shù)的求值計算,計算完成后取消標(biāo)記;然后繼續(xù)執(zhí)行調(diào)試對象程序進(jìn)程,返回至步 驟1. 1循環(huán)執(zhí)行以實現(xiàn)對下一個運算符單步調(diào)試,直到步驟1. 1判斷出調(diào)試器執(zhí)行調(diào)試對 象程序進(jìn)程至沒有運算符時為止。 而且,所述表達(dá)式中運算符和相應(yīng)操作數(shù)在源程序中的位置數(shù)據(jù),包括這個表達(dá) 式所在的源程序的源文件名,運算符和相應(yīng)操作數(shù)在源程序文件窗口中的行號,運算符的 字符串在源程序文件窗口中第一個字符列號和最后一個字符列號,相應(yīng)操作數(shù)的字符串在 源程序文件窗口中第一個字符列號和最后一個字符列號。 而且,所述標(biāo)記包括給運算符的字符串和操作數(shù)的字符串加上背景色亮條的高亮 顯示。 而且,所述標(biāo)記包括給運算符的字符串和操作數(shù)的字符串顏色反轉(zhuǎn)顯示。 而且,所述標(biāo)記包括給運算符的字符串和操作數(shù)的字符串改變字符的字體顏色的
高亮顯示。 而且,所述標(biāo)記包括給運算符的字符串和操作數(shù)的字符串加上下劃線。 而且,所述標(biāo)記包括給運算符的字符串和操作數(shù)的字符串加上字符邊框。 而且,所述標(biāo)記包括修改運算符的字符串和操作數(shù)的字符串的字符字體、字符字
號或字符字形的高亮顯示。 采用本發(fā)明,能夠在源程序?qū)哟谓o當(dāng)前將要執(zhí)行的運算符和操作數(shù)加上標(biāo)記,能 夠在源程序?qū)哟慰梢暤馗櫛磉_(dá)式中運算符和它的操作數(shù)求值計算的執(zhí)行流程,能夠在源 程序?qū)哟慰梢暤馗櫿Z句中多個表達(dá)式求值計算的執(zhí)行流程。本發(fā)明支持用戶更快速準(zhǔn)確 地定位程序故障,實施簡便,效果顯著。
圖1為本發(fā)明中在源程序?qū)哟蔚倪\算符單步調(diào)試方法實施例的軟件流程圖。 圖2為表示本發(fā)明實施例一中調(diào)試對象C語言程序的一部分,一個C語言程序表 達(dá)式。 圖3為表示本發(fā)明實施例一中給C語言程序表達(dá)式b*c加上顏色反轉(zhuǎn)顯示標(biāo)記。 圖4為表示本發(fā)明實施例一中給C語言程序表達(dá)式a_b*c加上顏色反轉(zhuǎn)顯示標(biāo) 記。 圖5為表示本發(fā)明實施例一中給C語言程序表達(dá)式d = a_b*c加上顏色反轉(zhuǎn)顯示 標(biāo)記。 圖6為表示本發(fā)明實施例二中調(diào)試對象C語言程序的一部分, 一個for循環(huán)語句。 圖7為表示本發(fā)明實施例二中給C語言程序循環(huán)語句的表達(dá)式1加上顏色反轉(zhuǎn)顯 示標(biāo)記。 圖8為表示本發(fā)明實施例二中給C語言程序循環(huán)語句的表達(dá)式2加上顏色反轉(zhuǎn)顯 示標(biāo)記。 圖9為表示本發(fā)明實施例二中給C語言程序循環(huán)語句的循環(huán)體語句加上顏色反轉(zhuǎn) 顯示標(biāo)記。
圖10為表示本發(fā)明實施例二中給C語言程序循環(huán)語句的表達(dá)式3加上顏色反轉(zhuǎn) 顯示標(biāo)記。
具體實施例方式
參見圖l,本發(fā)明為一種在源程序?qū)哟螌崿F(xiàn)運算符單步調(diào)試的方法,在解析或編譯 源程序時,記錄和存儲表達(dá)式中運算符和相應(yīng)操作數(shù)在源程序中的位置數(shù)據(jù);當(dāng)用戶使用 運算符單步調(diào)試命令時,調(diào)試器執(zhí)行以下步驟1、2、3 : 步驟1,當(dāng)用戶使用運算符單步調(diào)試命令時,啟動執(zhí)行調(diào)試對象程序進(jìn)程,通過調(diào) 試對象程序進(jìn)程實現(xiàn)以下步驟1. 1和步驟1. 2, 步驟1. l,判斷調(diào)試器是否執(zhí)行調(diào)試對象程序進(jìn)程至一個運算符,若是則對于調(diào) 試器執(zhí)行調(diào)試對象程序進(jìn)程所至的運算符,獲得已存儲的該運算符和相應(yīng)操作數(shù)的位置數(shù) 據(jù); 步驟1. 2,根據(jù)位置數(shù)據(jù)把該運算符和相應(yīng)操作數(shù)加上標(biāo)記,并把加上標(biāo)記后的運 算符和相應(yīng)操作數(shù)的源程序代碼在調(diào)試器窗口中顯示給用戶; 步驟2,在步驟1. 2執(zhí)行完畢后暫停調(diào)試對象程序進(jìn)程,等待用戶要求繼續(xù)執(zhí)行運 算符單步調(diào)試命令; 步驟3,當(dāng)用戶要求繼續(xù)執(zhí)行運算符單步調(diào)試命令時,執(zhí)行加上標(biāo)記后的運算符和 相應(yīng)操作數(shù)的求值計算,計算完成后取消標(biāo)記;然后繼續(xù)執(zhí)行調(diào)試對象程序進(jìn)程,返回至步 驟1. 1循環(huán)執(zhí)行以實現(xiàn)對下一個運算符單步調(diào)試,直到步驟1. 1判斷出調(diào)試器執(zhí)行調(diào)試對 象程序進(jìn)程至沒有運算符時為止。當(dāng)步驟l. l判斷發(fā)現(xiàn)不存在下一個需要單步調(diào)試的運算 符,實際實施時可能是用戶當(dāng)前需要檢查的表達(dá)式已經(jīng)處理完畢,那么就可以執(zhí)行其它不 帶運算符的源代碼進(jìn)行處理。例如,在c語言中,printf中可以沒有運算符,但這類代碼也 要執(zhí)行完畢,調(diào)試對象程序進(jìn)程才結(jié)束。 值得注意的是,步驟3中當(dāng)用戶要求繼續(xù)執(zhí)行運算符單步調(diào)試命令時,步驟1中當(dāng) 用戶使用運算符單步調(diào)試命令時,響應(yīng)此命令的操作不同??梢砸暈?,根據(jù)是否有加標(biāo)記的 運算符和相應(yīng)操作數(shù),采用不同響應(yīng)此命令的操作。如果有加標(biāo)記的運算符和相應(yīng)操作數(shù), 才執(zhí)行求值計算和取消標(biāo)記的操作。如果沒有加標(biāo)記的運算符和相應(yīng)操作數(shù),則是執(zhí)行判 斷是否有運算符和相應(yīng)加標(biāo)記操作。具體實施時,運算符單步調(diào)試命令據(jù)此匯編即可。
為了準(zhǔn)確考察所述表達(dá)式中運算符和相應(yīng)操作數(shù)在源程序中的位置數(shù)據(jù),本發(fā)明 還提出,事先存儲的位置數(shù)據(jù)包括有這個表達(dá)式所在的源程序的源文件名,運算符和相應(yīng) 操作數(shù)在源程序文件窗口中的行號,運算符的字符串在源程序文件窗口中第一個字符列號 和最后一個字符列號,相應(yīng)操作數(shù)的字符串在源程序文件窗口中第一個字符列號和最后一 個字符列號。 為了便于用戶查看,本發(fā)明提出可以對運算符的字符串和操作數(shù)的字符串施加標(biāo) 記,例如加上背景色亮條的高亮顯示、顏色反轉(zhuǎn)顯示、加上下劃線、加上字符邊框、修改字符 字體/字符字號/字符字形的高亮顯示等手段。這些手段也可以綜合使用,例如同時加上 背景色亮條和下劃線。
以下參照附圖和實施例,對本發(fā)明技術(shù)方案予以詳細(xì)說明。 實施例一用C語言程序作為調(diào)試對象,圖2中,表示了 C語言程序中的一個表達(dá)式
5語句"d = a_b*c"。在解析或編譯源程序時,記錄和存儲了這個表達(dá)式中所有的運算符和操 作數(shù)在源程序中的位置數(shù)據(jù)。具體實現(xiàn)過程如下 (1)用戶使用運算符單步調(diào)試命令,調(diào)試器響應(yīng)該命令執(zhí)行啟動執(zhí)行調(diào)試對象程 序進(jìn)程(是一個c語言程序進(jìn)程),執(zhí)行至表達(dá)式中的運算符"*",獲得已經(jīng)記錄和存儲的 這個運算符"*"以及它的兩個操作數(shù)"b"和"c"所在源文件的文件名、在源程序窗口中的 行號和列號等位置數(shù)據(jù),包括第一個操作數(shù)字符串"b"在源程序窗口中的第一個字符b的 列號和最后一個字符b的列號,包括第二個操作數(shù)字符串"c"在源程序窗口中的第一個字 符c的列號和最后一個字符c的列號。根據(jù)這些位置數(shù)據(jù)把運算符、"、操作數(shù)"b"和"c" 三個字符串顏色反轉(zhuǎn)顯示。圖3中,反轉(zhuǎn)顏色顯示標(biāo)記的這個表達(dá)式"b化"表示將要執(zhí)行 的一個計算動作,用戶能夠清晰地了解這個計算動作的運算符"f和它的操作數(shù)b和c。
調(diào)試器暫停執(zhí)行調(diào)試對象程序進(jìn)程,等待用戶給出繼續(xù)執(zhí)行的調(diào)試命令。
用戶繼續(xù)使用運算符單步調(diào)試命令,執(zhí)行這個運算動作"b*c",取消加在三個字符 串"b "、" * "和"c "上的顏色反轉(zhuǎn)顯示標(biāo)記。 (2)調(diào)解器執(zhí)行至表達(dá)式中的運算符"-",獲得已經(jīng)記錄和存儲的這個運算符"-" 以及它的兩個操作數(shù)"a"和"b化"的所在的源文件的文件名、在源程序窗口中的行號和列 號等位置數(shù)據(jù),包括第一個操作數(shù)字符串"a"在源程序窗口中的第一個字符a的列號和最 后一個字符a的列號,包括第二個操作數(shù)字符串"b*c"在源程序窗口件中的第一個字符b 的列號和最后一個字符c的列號。根據(jù)這些位置數(shù)據(jù)把運算符"-"、操作數(shù)"a"和"b化"三 個字符串顏色反轉(zhuǎn)顯示。圖4中,顏色反轉(zhuǎn)顯示標(biāo)記的這個表達(dá)式"a-b化"表示將要執(zhí)行 的一個計算動作,因為用戶已經(jīng)知道了上一個計算動作是"b化",因此用戶能夠清晰地了解 這個計算動作的運算符"_"和它的操作數(shù)"a"和"b*c"。 調(diào)試器暫停執(zhí)行調(diào)試對象程序進(jìn)程,等待用戶給出繼續(xù)執(zhí)行的調(diào)試命令。 用戶繼續(xù)使用運算符單步調(diào)試命令,執(zhí)行這個計算動作"a-b化",取消加在三個字
符串"a"、"-"和"b化"上的顏色反轉(zhuǎn)顯示標(biāo)記。
(3)調(diào)解器執(zhí)行至表達(dá)式中的運算符"=",獲得已經(jīng)記錄和存儲的這個運算符 "="以及它的兩個操作數(shù)"d"和"a-b*c"所在源文件的文件名、在源程序窗口中的行號和 列號等位置數(shù)據(jù),包括第一個操作數(shù)字符串"d"在源程序窗口中的第一個字符d的列號和 最后一個字符d的列號,包括第二個操作數(shù)字符串"a-b化"在源程序窗口中的第一個字符a 的列號和最后一個字符c的列號。根據(jù)這些位置數(shù)據(jù)把運算符"二"、操作數(shù)"d"和"a-b化" 三個字符串顏色反轉(zhuǎn)顯示。圖5中,顏色反轉(zhuǎn)顯示標(biāo)記的這個表達(dá)式"d = a-b化"表示將 要執(zhí)行的一個計算動作,因為用戶已經(jīng)知道了上一個計算動作是"a-b化",用戶能夠清晰地 了解這個計算動作的運算符"="和它的操作數(shù)"d"和"a_b*c "。
調(diào)試器暫停執(zhí)行這個C語言程序進(jìn)程,等待用戶給出繼續(xù)執(zhí)行的調(diào)試命令。
用戶繼續(xù)使用運算符單步調(diào)試命令,執(zhí)行這個計算動作"d = a-b化",取消加在三 個字符串"d"、"="和"a_b*c "上的顏色反轉(zhuǎn)顯示標(biāo)記。
(4)然后調(diào)試器繼續(xù)執(zhí)行這個C語言程序其它代碼。 本發(fā)明實施例一中,清晰的說明了,源程序?qū)哟螌崿F(xiàn)運算符單步調(diào)試方法在源程 序?qū)哟慰梢暤馗櫾闯绦虮磉_(dá)式中運算符計算動作的執(zhí)行流程,在每一個運算符計算動作 后可以觀察變量的值的改變和這個運算符計算表達(dá)式的計算結(jié)果。
如果標(biāo)記是給運算符字符串和操作數(shù)字符串加上背景色亮條的高亮顯示,并且運 算符字符串的背景亮條和操作數(shù)字串的背景亮條的顏色不一樣,用戶就可以直觀地分辨出 目前將要進(jìn)行計算的運算符和它的操作對象。 實施例二用C語言程序作為調(diào)試對象,圖6中,表示了 C語言程序中的一個for循 環(huán)語句"for(i = 1 ;i <= 100 ;i++)sum+ = 1 ;"。在解析或編譯源程序時,在解析或編譯 源程序時,記錄和存儲了這個for循環(huán)語句的表達(dá)式中所有的運算符和操作數(shù)在源程序中 的位置數(shù)據(jù)。具體實現(xiàn)過程如下 (1)用戶使用運算符單步調(diào)試命令,調(diào)試器執(zhí)行這個C語言程序進(jìn)程,調(diào)試器執(zhí)行 至for語句的表達(dá)式1 "i = 1"中的運算符"="時,獲得已經(jīng)記錄和存儲的這個運算符 "="以及它的兩個操作數(shù)"i "和"1"所在源文件的文件名、在源程序窗口中的行號和列號 等位置數(shù)據(jù),包括第一個操作數(shù)字符串"i"在源程序窗口中的第一個字符i的列號和最后 一個字符i的列號,包括第二個操作數(shù)字符串"l"在源程序窗口中的第一個字符l的列號 和最后一個字符1的列號。根據(jù)這些位置數(shù)據(jù)把運算符"="、操作數(shù)""和"1"三個字符 串顏色反轉(zhuǎn)顯示。圖7中,顏色反轉(zhuǎn)顯示標(biāo)記的這個表達(dá)式"i = l"表示將要求解的一個 表達(dá)式計算。 調(diào)試器暫停執(zhí)行這個C語言程序進(jìn)程,等待用戶給出繼續(xù)執(zhí)行的調(diào)試命令。
用戶繼續(xù)使用運算符單步調(diào)試命令,執(zhí)行這個表達(dá)式"i = l"求值計算,取消加在 三個字符串"i "、"="和"1"上的顏色反轉(zhuǎn)顯示標(biāo)記。 (2)調(diào)試程序執(zhí)行這個C語言程序至for語句的表達(dá)式2 " i < = 100 "中的運算 符" < ="時,獲得已經(jīng)記錄和存儲的這個運算符" < ="以及它的兩個操作數(shù)"i "和"100 " 所在源文件的文件名、在源程序窗口中的行號和列號等位置數(shù)據(jù),包括第一個操作數(shù)字符 串"i"在源程序窗口中的第一個字符i的列號和最后一個字符i的列號,包括第二個操作 數(shù)字符串"100"在源程序窗口中的第一個字符1的列號和最后一個字符0的列號。根據(jù)這 些位置數(shù)據(jù)把運算符"< ="、操作數(shù)"1"和"100"三個字符串顏色反轉(zhuǎn)顯示。圖8中,顏色 反轉(zhuǎn)顯示標(biāo)記的這個字符串"i <= IOO"表示將要求解的一個表達(dá)式計算。
調(diào)試器暫停執(zhí)行這個C語言程序進(jìn)程,等待用戶給出繼續(xù)執(zhí)行的調(diào)試命令。
用戶繼續(xù)使用運算符單步調(diào)試命令,執(zhí)行這個表達(dá)式"i <= IOO"求值計算,取消 加在三個字符串"i "、" < ="和"100 "上的顏色反轉(zhuǎn)顯示標(biāo)記。 (3)如果表達(dá)式"i <= 100"的值為真,調(diào)試器執(zhí)行這個C語言程序至for語句的 循環(huán)體表達(dá)式"811111+ = 1"中的運算符"+ ="時,獲得已經(jīng)記錄和存儲的這個運算符"+ =" 以及它的兩個操作數(shù)"sum"和"i "所在源文件的文件名、在源程序窗口中的行號和列號等 位置數(shù)據(jù),包括第一個操作數(shù)字符串"sum"在源程序窗口中的第一個字符s的列號和最后 一個字符m的列號,包括第二個操作數(shù)字符串"i "在源程序窗口中的第一個字符i的列號 和最后一個字符i的列號。根據(jù)這些位置數(shù)據(jù)把運算符"+ 二"、操作數(shù)"sum"和"i"三個
字符串顏色反轉(zhuǎn)顯示。圖9中,顏色反轉(zhuǎn)顯示標(biāo)記的這個字符串"別!11+ = i"表示將要求解
的一個表達(dá)式計算。 調(diào)試器暫停執(zhí)行這個C語言程序進(jìn)程,等待用戶給出繼續(xù)執(zhí)行的調(diào)試命令。
(4)用戶繼續(xù)使用運算符單步調(diào)試命令,執(zhí)行這個表達(dá)式"別!11+ = i"求值計算,取 消加在三個字符串"sum"、"+ ="和"i "上的顏色反轉(zhuǎn)顯示標(biāo)記。
調(diào)試程序執(zhí)行這個C語言程序至for語句的表達(dá)式3 " 中的運算符"++"時, 獲得已經(jīng)記錄和存儲的這個運算符"++"以及它的操作數(shù)"1"所在源文件的文件名、在源程 序窗口中的行號和列號等位置數(shù)據(jù),包括操作數(shù)字符串"i "在源程序窗口中的第一個字符 i的列號和最后一個字符i的列號,因為字符串"i"只有一個字符,因此實際上第一個字符 和最后一個字符都是i。根據(jù)這些位置數(shù)據(jù)把運算符"++"和""兩個字符串顏色反轉(zhuǎn)顯 示。圖10中,顏色反轉(zhuǎn)顯示標(biāo)記的這個表達(dá)式"1++"表示將要求解的一個表達(dá)式計算。
調(diào)試器暫停執(zhí)行這個C語言程序進(jìn)程,等待用戶給出繼續(xù)執(zhí)行的調(diào)試命令。
用戶繼續(xù)使用運算符單步調(diào)試命令,執(zhí)行這個表達(dá)式"1++"求值計算,取消加在兩 個字符串"++"和"i "上的顏色反轉(zhuǎn)顯示標(biāo)記。 (5)按照for語句的執(zhí)行過程,for表達(dá)式2將是下一個被標(biāo)記的表達(dá)式,用戶繼 續(xù)使用運算符單步調(diào)試命令后,表達(dá)式2的計算值將會確定是否繼續(xù)這個for循環(huán)還是結(jié) 束這個for循環(huán)。 本發(fā)明實施例二,清晰的說明了,源程序?qū)哟螌崿F(xiàn)運算符單步調(diào)試方法還可以在 源程序?qū)哟慰梢暤馗櫾闯绦蛞粭l語句中各個表達(dá)式求解的執(zhí)行流程。在每一個表達(dá)式計 算后可以觀察變量值的變化和表達(dá)式計算結(jié)果。
權(quán)利要求
一種在源程序?qū)哟螌崿F(xiàn)運算符單步調(diào)試的方法,其特征在于在解析或編譯源程序時,記錄和存儲表達(dá)式中運算符和相應(yīng)操作數(shù)在源程序中的位置數(shù)據(jù);調(diào)試器執(zhí)行以下步驟,步驟1,當(dāng)用戶使用運算符單步調(diào)試命令時,啟動執(zhí)行調(diào)試對象程序進(jìn)程,通過調(diào)試對象程序進(jìn)程實現(xiàn)以下步驟1.1和步驟1.2,步驟1.1,判斷調(diào)試器是否執(zhí)行調(diào)試對象程序進(jìn)程至一個運算符,若是則對于調(diào)試器執(zhí)行調(diào)試對象程序進(jìn)程所至的運算符,獲得已存儲的該運算符和相應(yīng)操作數(shù)的位置數(shù)據(jù);步驟1.2,根據(jù)位置數(shù)據(jù)把該運算符和相應(yīng)操作數(shù)加上標(biāo)記,并把加上標(biāo)記后的運算符和相應(yīng)操作數(shù)的源程序代碼在調(diào)試器窗口中顯示給用戶;步驟2,在步驟1.2執(zhí)行完畢后暫停調(diào)試對象程序進(jìn)程,等待用戶要求繼續(xù)執(zhí)行運算符單步調(diào)試命令;步驟3,當(dāng)用戶要求繼續(xù)執(zhí)行運算符單步調(diào)試命令時,執(zhí)行加上標(biāo)記后的運算符和相應(yīng)操作數(shù)的求值計算,計算完成后取消標(biāo)記;然后繼續(xù)執(zhí)行調(diào)試對象程序進(jìn)程,返回至步驟1.1循環(huán)執(zhí)行以實現(xiàn)對下一個運算符單步調(diào)試,直到步驟1.1判斷出調(diào)試器執(zhí)行調(diào)試對象程序進(jìn)程至沒有運算符時為止。
2. 如權(quán)利要求1所述在源程序?qū)哟螌崿F(xiàn)運算符單步調(diào)試的方法,其特征在于所述表 達(dá)式中運算符和相應(yīng)操作數(shù)在源程序中的位置數(shù)據(jù),包括這個表達(dá)式所在的源程序的源文 件名,運算符和相應(yīng)操作數(shù)在源程序文件窗口中的行號,運算符的字符串在源程序文件窗 口中第一個字符列號和最后一個字符列號,相應(yīng)操作數(shù)的字符串在源程序文件窗口中第一 個字符列號和最后一個字符列號。
3. 如權(quán)利要求1或2所述在源程序?qū)哟螌崿F(xiàn)運算符單步調(diào)試的方法,其特征在于所 述標(biāo)記包括給運算符的字符串和操作數(shù)的字符串加上背景色亮條的高亮顯示。
4. 如權(quán)利要求1或2所述在源程序?qū)哟螌崿F(xiàn)運算符單步調(diào)試的方法,其特征在于所 述標(biāo)記包括給運算符的字符串和操作數(shù)的字符串顏色反轉(zhuǎn)顯示。
5. 如權(quán)利要求1或2所述在源程序?qū)哟螌崿F(xiàn)運算符單步調(diào)試的方法,其特征在于所 述標(biāo)記包括給運算符的字符串和操作數(shù)的字符串改變字符的字體顏色的高亮顯示。
6. 如權(quán)利要求1或2所述在源程序?qū)哟螌崿F(xiàn)運算符單步調(diào)試的方法,其特征在于所 述標(biāo)記包括給運算符的字符串和操作數(shù)的字符串加上下劃線。
7. 如權(quán)利要求1或2所述在源程序?qū)哟螌崿F(xiàn)運算符單步調(diào)試的方法,其特征在于所 述標(biāo)記包括給運算符的字符串和操作數(shù)的字符串加上字符邊框。
8. 如權(quán)利要求1或2所述在源程序?qū)哟螌崿F(xiàn)運算符單步調(diào)試的方法,其特征在于所 述標(biāo)記包括修改運算符的字符串和操作數(shù)的字符串的字符字體、字符字號或字符字形的高 亮顯示。
全文摘要
本發(fā)明涉及一種在源程序?qū)哟螌崿F(xiàn)應(yīng)用程序運算符單步調(diào)試的方法,調(diào)試人員使用運算符單步調(diào)試命令調(diào)試應(yīng)用程序時,調(diào)試器執(zhí)行應(yīng)用程序進(jìn)程并搜索應(yīng)用程序表達(dá)式中的運算符,當(dāng)搜索到一個運算符時,把這個運算符和它的操作數(shù)加上標(biāo)記,調(diào)試器暫停;用戶繼續(xù)使用運算符單步調(diào)試命令后,先執(zhí)行加了標(biāo)記的運算符表達(dá)式求值計算,然后取消加了標(biāo)記的運算符和操作數(shù)上的標(biāo)記,調(diào)試器繼續(xù)執(zhí)行應(yīng)用程序進(jìn)程和搜索下一個運算符,直到調(diào)試程序結(jié)束。本發(fā)明有益的效果在于能夠方便調(diào)試人員在源程序?qū)哟慰梢暤馗櫢呒壵Z言源程序表達(dá)式中各個運算符計算動作的執(zhí)行流程,在每一個運算符計算動作后可以觀察變量的值的改變和計算表達(dá)式的計算結(jié)果。
文檔編號G06F11/36GK101794252SQ20091027336
公開日2010年8月4日 申請日期2009年12月23日 優(yōu)先權(quán)日2009年12月23日
發(fā)明者張曙光 申請人:張曙光