Ⅰ debug是什麼東西如何使用這個程序
Debug
Debug原意是殺蟲子。這里是機器調試工具。
他的用處有很多
啟動 Debug,它是可用於測試和調試 MS-DOS 可執行文件的程序。
Debug [[drive:][path] filename [parameters]]
參數
[drive:][path] filename
指定要測試的可執行文件的位置和名稱。
parameters
指定要測試的可執行文件所需要的任何命令行信息。
++
說明
使用 Debug 命令但不指定要測試的文件
如果使用沒有位置和文件名的 Debug 命令,然後鍵入所有的 Debug 命令以響應 Debug 提示符,連字元 (-)。
Debug 命令
以下是 Debug 命令列表:
? 顯示 Debug 命令列表。
a 匯編 8086/8087/8088 記憶碼。
c 比較內存的兩個部分。
d 顯示部分內存的內容。
e 從指定地址開始,將數據輸入到內存。
f 使用指定值填充一段內存。
g 運行在內存中的可執行文件。
h 執行十六進制運算。
i 顯示來自特定埠的 1 位元組值。
l 將文件或磁碟扇區內容載入到內存。
m 復制內存塊中的內容
/n 為 l 或 w 命令指定文件,或者指定正在測試的文件的參數。
o 向輸出埠發送 1 個位元組的值。
p 執行循環、重復的字元串指令、軟體中斷或子常式。
q 停止 Debug 會話。
r 顯示或改變一個或多個寄存器。
s 在部分內存中搜索一個或多個位元組值的模式。
t 執行一條指令,然後顯示所有寄存器的內容、所有標志的狀態和 Debug 下一步要執行的指令的解碼形式。
u 反匯編位元組並顯示相應的原語句。
w 將被測試文件寫入磁碟。
xa 分配擴展內存。
xd 釋放擴展內存。
xm 映射擴展內存頁。
xs 顯示擴展內存的狀態。
分隔命令參數
所有 Debug 命令都接受參數,除了 q 命令之外。可以用逗號或空格分隔參數,但是只有在兩個十六進制值之間才需要這些分隔符。因此,以下命令等價:
dcs:100 110
d cs:100 110
d,cs:100,110
指定有效地址項
Debug 命令中的 address 參數指定內存位置。Address 是一個包含字母段記錄的二位名稱或一個四位欄位地址加上一個偏移量。可以忽略段寄存器或段地址。a,g,l,t,u 和 w 命令的默認段是 CS。所有其他命令的默認段是 DS。所有數值均為十六進制格式。
有效地址如下:
CS:0100
04BA:0100
在段名和偏移量之間要有冒號。
指定有效范圍項
Debug 命令中的 range 參數指定了內存的范圍。可以為 range 選擇兩種格式:起始地址和結束地址,或者起始地址和長度范圍(由 l 表示)。
例如,下面的兩個語法都可以指定從 CS:100 開始的 16 位元組范圍:
cs:100 10f
cs:100 l 10
++
Debug 子命令
選擇 Debug 命令以獲得詳細信息。
Debug:A(匯編)
Debug:C(比較)
Debug(轉儲)
Debug:E(鍵入)
Debug:F(填充)
Debug:G(轉向)
Debug:H(十六進制)
Debug:I(輸入)
Debug:L(載入)
Debug:M(移動)
Debug:N(名稱)
Debug:O(輸出)
Debug:P(執行)
Debug:Q(退出)
Debug:r(寄存器)
Debug:s(搜索)
Debug:T(跟蹤)
Debug:U(反匯編)
Debug:W(寫入)
Debug:XA(分配擴展內存)
Debug:XD(取消分配擴展內存)
Debug:XM(映射擴展內存頁)
Debug:XS(顯示擴展內存狀態)
***********************Debug子命令******************************
Debug:A(匯編)
直接將 8086/8087/8088 記憶碼合並到內存。
該命令從匯編語言語句創建可執行的機器碼。所有數值都是十六進制格式,必須按一到四個字元輸入這些數值。在引用的操作代碼(操作碼)前指定前綴記憶碼。
a [address]
參數
address
指定鍵入匯編語言指令的位置。對 address 使用十六進制值,並鍵入不以「h」字元結尾的每個值。如果不指定地址,a 將在它上次停止處開始匯編。
有關將數據輸入到指定位元組中的信息,請單擊「相關主題」列表中的 Debug E(鍵入)。
有關反匯編位元組的信息,請單擊「相關主題」列表中的 Debug U(反匯編)。
範例
a 命令支持所有形式的間接注冊命令,如下例所示:
add bx,34[bp+2].[si-1]
pop [bp+di]
push [si] )
還支持所有操作碼同義詞,如下例所示:
loopz 100
loope 100
ja 200
jnbe 200
對於 8087 操作碼,必須指定 wait 或 fwait 前綴,如下例所示:
fwait fadd st,st(3) ; this line assembles
; an fwait prefix
說明
使用記憶碼
段的替代記憶碼為 cs:、ds:、es: 和 ss:。遠程返回的記憶碼是 retf。字元串處理的記憶碼必須明確聲明字元串大小。例如,使用 movsw 可以移動 16 位的字串,使用 mov***(文字因故被系統屏蔽)***(文字因故被系統屏蔽) 可以移動 8 位位元組串。
匯編跳轉和調用
匯編程序根據位元組替換自動將短、近和遠的跳轉及調用匯編到目標地址。通過使用 near 或 far 前綴可以替代這樣的跳轉或調用,如下例所示:
-a0100:0500
0100:0500 jmp 502 ; a 2-byte short jump
0100:0502 jmp near 505 ; a 3-byte near jump
0100:0505 jmp far 50a ; a 5-byte far jump
可以將 near 前綴縮寫為 ne。
區分字和位元組內存位置
當某個操作數可以引用某個字內存位置或者位元組內存位置時,必須用前綴 word ptr 或者前綴 byte ptr 指定數據類型。可接受的縮寫分別是 wo 和 by。以下範例顯示兩種格式:
dec wo [si]
neg byte ptr [128]
指定操作數
Debug 使用包括在中括弧 ([ ]) 的操作數引用內存地址的習慣用法。這是因為另一方面 Debug 不能區分立即操作數和內存地址的操作數。以下範例顯示兩種格式:
mov ax,21 ; load AX with 21h
mov ax,[21] ; load AX with the
; contents of
; memory location 21h
使用偽指令
使用 a 命令提供兩個常用的偽指令:db 操作碼,將位元組值直接匯編到內存,dw 操作碼,將字值直接匯編到內存。以下是兩個偽指令的範例:
db 1,2,3,4,"THIS IS AN EXAMPLE"
db THIS IS A QUOTATION MARK:"
db "THIS IS A QUOTATION MARK:"
dw 1000,2000,3000,"BACH"
++
Debug:C(比較)
比較內存的兩個部分。
c range address
參數
range
指定要比較的內存第一個區域的起始和結束地址,或起始地址和長度。有關有效的 range 值的信息,請單擊「相關主題」列表中的「Debug 說明」。
address
指定要比較的第二個內存區域的起始地址。有關有效 address 值的信息,請單擊「相關主題」列表中的「Debug 說明」。
++
範例
以下命令具有相同效果:
c100,10f 300
c100l10 300
每個命令都對 100h 到 10Fh 的內存數據塊與 300h 到 30Fh 的內存數據塊進行比較。
Debug 響應前面的命令並顯示如下信息(假定 DS = 197F):
197F:0100 4D E4 197F:0300
197F:0101 67 99 197F:0301
197F:0102 A3 27 197F:0302
197F:0103 35 F3 197F:0303
197F:0104 97 BD 197F:0304
197F:0105 04 35 197F:0305
197F:0107 76 71 197F:0307
197F:0108 E6 11 197F:0308
197F:0109 19 2C 197F:0309
197F:010A 80 0A 197F:030A
197F:010B 36 7F 197F:030B
197F:010C BE 22 197F:030C
197F:010D 83 93 197F:030D
197F:010E 49 77 197F:030E
197F:010F 4F 8A 197F:030F
注意列表中缺少地址 197F:0106 和 197F:0306。這表明那些地址中的值是相同的。
++
說明
如果 range 和 address 內存區域相同,Debug 將不顯示任何內容而直接返回到 Debug 提示符。如果有差異,Debug 將按如下格式顯示:
address1 byte1 byte2 addess2
++++
Debug(轉儲)
顯示一定范圍內存地址的內容。
d [range]
參數
range
指定要顯示其內容的內存區域的起始和結束地址,或起始地址和長度。有關有效的 range 值的信息,請單擊「相關主題」列表中的「Debug 說明」。如果不指定 range,Debug 程序將從以前 d 命令中所指定的地址范圍的末尾開始顯示 128 個位元組的內容。
有關顯示寄存器內容的信息,請單擊「相關主題」列表中的 Debug R(寄存器)。
++
範例
假定鍵入以下命令:
dcs:100 10f
Debug 按以下格式顯示範圍中的內容:
04BA:0100 54 4F 4D 00 53 41 57 59-45 52 00 00 00 00 00 00 TOM.SAWYER......
如果在沒有參數的情況下鍵入 d 命令,Debug 按以前範例中所描述的內容來編排顯示格式。顯示的每行以比前一行的地址大 16 個位元組(如果是顯示 40 列的屏幕,則為 8 個位元組)的地址開頭。
對於後面鍵入的每個不帶參數的 d 命令,Debug 將緊接在最後顯示的命令後立即顯示位元組內容。
如果鍵入以下命令,Debug 將從 CS:100 開始顯示 20h 個位元組的內容:
dcs:100 l 20
如果鍵入以下命令,Debug 將顯示範圍從 CS 段的 100h 到 115h 中所有位元組的內容:
dcs:100 115
++
說明
當使用 d 命令時,Debug 以兩個部分顯示內存內容:十六進制部分(每個位元組的值都用十六進制格式表示)和 ASCII 碼部分(每個位元組的值都用 ASCII 碼字元表示)。每個非列印字元在顯示的 ASCII 部分由句號 (.) 表示。每個顯示行顯示 16 位元組的內容,第 8 位元組和第 9 位元組之間有一個連字元。每個顯示行從 16 位元組的邊界上開始。
++
Debug:E(鍵入)
將數據輸入到內存中指定的地址。
可以按十六進制或 ASCII 格式鍵入數據。以前存儲在指定位置的任何數據全部丟失。
e address
參數
address
指定輸入數據的第一個內存位置。
list
指定要輸入到內存的連續位元組中的數據。
有關集成記憶碼的信息,請單擊「相關主題」列表中的 Debug A(匯編)。
有關顯示內存部分內容的信息,請單擊「相關主題」列表中的 Debug D (轉儲)。
++
範例
假定鍵入以下命令:
ecs:100
Debug 按下面的格式顯示第一個位元組的內容:
04BA:0100 EB.
要將該值更改為 41,請在插入點鍵入 41,如下所示:
04BA:0100 EB.41_
可以用一個 e 命令鍵入連續的位元組值。在鍵入新值後按 SPACEBAR(空格鍵),而不是按 ENTER 鍵。Debug 顯示下一個值。在此範例中,如果按三次 SPACEBAR(空格鍵),Debug 將顯示下面的值:
04BA:0100 EB.41 10. 00. BC._
要將十六進制值 BC 更改為 42,請在插入點鍵入 42,如下所示:
04BA:0100 EB.41 10. 00. BC.42_
假定決定值 10 應該是 6F。要糾正該值,請按 HYPHEN 鍵兩次以返回到地址 0101(值 10)。Debug 顯示以下內容:
04BA:0100 EB.41 10. 00. BC.42-
04BA:0102 00.-
04BA:0101 10._
在插入點鍵入 6f 更改值,如下所示:
04BA:0101 10.6f_
按 ENTER 停止 e 命令並返回到 Debug 提示符下。
以下是字元串項的範例:
eds:100 "This is the text example"
該字元串將從 DS:100 開始填充 24 個位元組。
++
說明
使用 address 參數
如果在沒有指定可選的 list 參數的值情況下指定 address 的值,Debug 將顯示地址和內容,在下一行重復地址,並等待您的輸入。此時,您可以執行下列操作之一:
· 替換位元組值。為此,請在當前值後鍵入新值。如果您鍵入的值不是有效的十六進制值,或該值包含兩個以上的數字,則 Debug 不會回顯無效或額外的字元。
· 進入下一個位元組。為此,請按 SPACEBAR(空格鍵)。要更改該位元組中的值,請在當前值後鍵入新值。如果按 SPACEBAR(空格鍵)時,移動超過了 8 位界限,Debug 程序將顯示新的一行並在行首顯示新地址。
· 返回到前一個位元組。為此,請按 HYPHEN 鍵 (-)。可以反復按 HYPHEN 鍵 (-) 向後移動超過多個位元組。在按 HYPHEN 時,Debug 開始新行並顯示當前地址和位元組值。
· 停止執行 e 命令。為此,請按 ENTER 鍵。在任何位元組位置都可以按 ENTER。
使用 list 參數
如果指定 list 參數的值,隨後的 e 命令將使用列表中的值替換現有的位元組值。如果發生錯誤,將不更改任何位元組值。
List 值可以是十六進制位元組或字元串。使用空格、逗號或製表符來分隔值。必須將字元串包括在單或雙引號中。
++++
Debug:F(填充)
使用指定的值填充指定內存區域中的地址。
可以指定十六進制或 ASCII 格式表示的數據。任何以前存儲在指定位置的數據將會丟失。
f range list
參數
range
指定要填充內存區域的起始和結束地址,或起始地址和長度。關於有效的 range 值的信息,請單擊「相關主題」列表中的「Debug 說明」。
list
指定要輸入的數據。List 可以由十六進制數或引號包括起來的字元串組成。
++
範例
假定鍵入以下命令:
f04ba:100l100 42 45 52 54 41
作為響應,Debug 使用指定的值填充從 04BA:100 到 04BA:1FF 的內存位置。Debug 重復這五個值直到 100h 個位元組全部填滿為止。
++
說明
使用 range 參數
如果 range 包含的位元組數比 list 中的數值大,Debug 將在 list 中反復指派值,直到 range 中的所有位元組全部填充。
如果在 range 中的任何內存損壞或不存在,Debug 將顯示錯誤消息並停止 f 命令。
使用 list 參數
如果 list 包含的數值多於 range 中的位元組數,Debug 將忽略 list 中額外的值。
++
Debug:G(轉向)
運行當前在內存中的程序。
g [=address] [breakpoints]
參數
=address
指定當前在內存中要開始執行的程序地址。如果不指定 address,Windows 2000 將從 CS:IP 寄存器中的當前地址開始執行程序。
breakpoints
指定可以設置為 g 命令的部分的 1 到 10 個臨時斷點。
有關執行循環、重復的字元串指令、軟體中斷或子程序的信息,請單擊「相關主題」列表中的 Debug P(執行)。
有關執行指令的信息,請單擊「相關主題」列表中的 Debug T(跟蹤)。
範例
假定鍵入以下命令:
gcs:7550
Windows 2000 運行當前內存中的程序,直到執行到 CS 段中的斷點地址 7550 為止。Debug 將顯示寄存器的內容和標志的狀態並結束 g 命令。
以下命令設置兩個斷點:
gcs:7550, cs:8000
如果在 Debug 遇到斷點之後再次鍵入 g 命令,將從在斷點之後的指令開始執行,而不是在通常的開始地址執行。
++
說明
使用 address 參數
必須在 address 參數之前使用等號 (=) 以區分開始地址 (address) 和斷點地址 (breakpoints)。
指定斷點
程序在它遇到的第一個斷點處停止,而不論您在 breakpoint 列表的什麼位置鍵入斷點。Debug 在每個斷點處用中斷代碼代替原始指令。
當程序到達斷點時,Debug 將所有斷點地址恢復到它們的最初指令並顯示所有寄存器的內容、所有標記的狀態以及最後執行指令的解碼形式。Debug 顯示的信息與使用 Debug r(寄存器)命令並指定斷點時所顯示的信息相同。
如果不在斷點處停止程序,Debug 程序將不使用原始指令替換中斷代碼。
設置斷點的限制
可以只在包含 8086 操作代碼(操作碼)的第一個位元組的地址上設置斷點。如果設置了 10 個以上的斷點,Debug 將顯示以下信息:
bp error
對用戶堆棧指針的要求
用戶堆棧指針必須有效且必須有 6 個位元組可用於 g 命令。該命令使用 iret 指令跳轉到正在被測試的程序。Debug 設置用戶堆棧指針並將用戶標志、代碼段寄存器和指令指針壓入用戶堆棧。(如果用戶堆棧無效或太小,操作系統可能會失敗。)Debug 在指定的斷點處設置中斷代碼 (0CCh)。
重新啟動程序
不要在 Windows 2000 顯示以下消息後嘗試重新啟動程序;
Program terminated normally
要正確地運行程序,必須通過使用 Debug n(名稱)和 l(載入)命令重新載入該程序。
++++
Debug:H(十六進制)
對指定的兩個參數執行十六進制運算。
h value1 value2
參數
value1
代表從 0 到 FFFFh 范圍內的任何十六進制數字。
value2
代表從 0 到 FFFFh 范圍內第二個十六進制數字。
++
範例
假定鍵入以下命令:
h19f 10a
Debug 執行運算並顯示以下結果。
02A9 0095
++
說明
Debug 首先將指定的兩個參數相加,然後從第一個參數中減去第二個參數。這些計算的結果顯示在一行中:先計算和,然後計算差。
++++
Debug:I(輸入)
從指定的埠讀取並顯示一個位元組值。
i port
參數
port
按地址指定輸入埠。地址可以是 16 位的值。
有關將位元組值發送到輸出埠的信息,請單擊「相關主題」列表中的 Debug O(輸出)。
++
範例
假定鍵入以下命令:
i2f8
同時假定埠的位元組值是 42h。Debug 讀取該位元組,並將其值顯示如下:
42
++
Debug:L(載入)
將某個文件或特定磁碟扇區的內容載入到內存。
要從磁碟文件載入 BX:CX 寄存器中指定的位元組數內容,請使用以下語法:
l [address]
要略過 Windows 2000 文件系統並直接載入特定的扇區,請使用以下語法:
l address drive start number
參數
address
指定要在其中載入文件或扇區內容的內存位置。如果不指定 address,Debug 將使用 CS 寄存器中的當前地址。
drive
指定包含讀取指定扇區的磁碟的驅動器。該值是數值型:0 = A, 1 = B, 2 = C 等。
start
指定要載入其內容的第一個扇區的十六進制數。
number
指定要載入其內容的連續扇區的十六進制數。只有要載入特定扇區的內容而不是載入 debug 命令行或最近的 Debug n(名稱)命令中指定的文件時,才能使用 drive、start 和 number 參數。
有關指定用於 l 命令的文件的信息,請單擊「相關主題」列表中的 Debug n(名稱)。
有關寫入調試到磁碟的文件的信息,請單擊「相關主題」列表中的 Debug w(寫入)。
++
範例
假定啟動 Debug 並鍵入以下命令:
nfile.com
現在可以鍵入 l 命令以載入 File.com。Debug 將載入文件並顯示 Debug 提示符。
假定需要從驅動器 C 將起始邏輯扇區為 15 (0Fh) 的 109 (6Dh) 個扇區的內容載入到起始地址為 04BA:0100 的內存中。為此,請鍵入以下命令:
l04ba:100 2 0f 6d
++
注意
使用不帶參數的 l 命令
當使用不帶參數的 l 命令時,在 debug 命令行上指定的文件將載入到內存中,從地址 CS:100 開始。Debug 同時將 BX 和 CX 寄存器設置為載入的位元組數。如果不在 debug 命令行指定文件,所裝入的文件將是最近使用 n 命令經常指定的文件。
使用具有 address 參數的 1 命令
如果使用帶 address 參數的 l 命令,Debug 將從內存位置 address 開始載入文件或指定扇區的內容。
使用帶全部參數的 l 命令
如果使用帶所有參數的 l 命令,Debug 將載入指定磁碟扇區的內容而不是載入文件。
載入特定扇區的內容
指定范圍內的每個扇區均從 drive 讀取。Debug 從 start 開始載入,直到在 number 中指定的扇區數中的內容全部被載入。
載入 .exe 文件
Debug 忽略 .exe 文件的地址 address 參數。如果指定 .exe 文件,Debug 將文件重新定位到 .exe 文件的標題中指定的載入地址。在 .exe 文件被載入到內存前,標題自身從 .exe 文件脫離,因此磁碟上的 .exe 文件大小與內存中的不同。如果要檢查整個 .exe 文件,請使用不同的擴展名重命名文件。
打開十六進制文件
Debug 將具有 .hex 擴展名的文件認為十六進制格式文件。鍵入不帶參數的 l 命令,可以載入從十六進制文件中指定的地址處開始的十六進制文件。如果鍵入的 l 命令包含 address 參數,Debug 將把指定的地址加到在十六進制文件中找到的地址上,以確定起始地址。
++++
Debug:M(移動)
將一個內存塊中的內容復制到另一個內存塊中。
m range address
參數
range
指定要復制內容的內存區域的起始和結束地址,或起始地址和長度。
address
指定要將 range 內容復制到該位置的起始地址。
++
範例
假定鍵入以下命令:
mcs:100 110 cs:500
Debug 首先將 CS:110 地址中的內容復制到地址 CS:510 中,然後將 CS:10F 地址中的內容復制到 CS:50F 中,如此操作直至將 CS:100 地址中的內容復制到地址 CS:500 中。要查看結果,請使用 Debug d(轉儲)命令,並使用 m 命令指定目標地址。
++
說明
復制操作對現有數據的影響
如果新數據沒有寫入正在被復制的數據塊中的地址,則源數據將保持不變。但是,如果目標塊已經包含數據(就象它在覆蓋副本操作中一樣),則將改寫該數據。(覆蓋復制操作是指那些目標數據塊部分內容覆蓋原數據塊部分內容的操作。)
執行覆蓋復制操作
m 命令執行目標地址的覆蓋復制操作,而不丟失數據。將改寫的地址內容首先復制。因此,如果將較高位地址的數據復制到較低位地址,則復制操作從原塊的最低位地址開始並向最高位地址進行。反之,如果要將數據從低地址復制到高地址,復制操作從原塊的最高地址開始,向最低地址進行。
++++
Debug:N(名稱)
指定 Debug l(載入)或 w(寫入)命令的可執行文件的名稱,或者指定正在調試的可執行文件的參數。
n [drive:][path] filename
Ⅱ 請問在debug狀態下,怎樣寫入程序用a指令怎麼寫程序
完整過程如下:
C:\>DEBUG
-E200 (輸入E200回車)
0AF5:0200 74.0 65.1 61.2 64.3 20.4 6F.5 66.6 0D.7
0AF5:0208 0A.8 25.9 76.A 61.B 72.C 69.D 61.E 62.F
(依次鍵入1,2 。。。C.D.E.F,字元間用空格鍵,鍵入F後回車)
-
-A (輸入匯編命令A後回車)
0AF5:0100 MOV SI, 0200 (依次鍵入各行命令,以回車結束,注意數據後不要加H)
0AF5:0103 MOV DI, 0230
0AF5:0106 MOV CX, 10
0AF5:0109 REP MOVSB
0AF5:010B (這里直接回車)
-
-
-D200 L10 (顯示剛鍵入的內容)
0AF5:0200 00 01 02 03 04 05 06 07-08 09 0A 0B 0C 0D 0E 0F ................
-D230 L10 (顯示待復制處在復制前的內容,該處現在的具體內容不一定)
0AF5:0230 61 64 73 20 61 20 70 72-6F 67 72 61 6D 20 69 6E ads a program in
-
-G10B (執行鍵入的匯編程序,默認值從100開始,到10B結束)
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0210 DI=0240
DS=0AF5 ES=0AF5 SS=0AF5 CS=0AF5 IP=010B NV UP EI PL NZ NA PO NC
0AF5:010B 7320 JNB 012D
-
-D230 L10 (顯示待復制處在復制後的內容,該處現在的內容應該與鍵入的內容一致)
0AF5:0230 00 01 02 03 04 05 06 07-08 09 0A 0B 0C 0D 0E 0F ................
-
-Q (返回DOS提示符)
另外,以上出現的0AF5是段地址,不用管它,你運行的環境可能不是該值。
呵呵,該知道怎麼做了吧!
Ⅲ 怎麼用debug c語言
簡單來說,有兩種方式,一種是源碼debug,即分析源碼來找出bug位置,一般使用printf()列印出程序執行每一步的信息,一種是可執行文件debug,需要使用調試器來進行。
1、源碼debug
類似於下面的源碼,主要通過程序執行時輸出的信息,來定位bug出現的位置,然後再修改源碼。
#include<stdio.h>
voidf(){;}
intmain()
{
#ifdef_DEBUG
printf("startmainfunction! ");
#endif
voidf();
#ifdef_DEBUG
printf("leavemainfunction! ");
#endif
return0;
}
2、可執行文件調試,windows平台常用的就是vs/vc自帶的調試,另外一個就是微軟自家開發的調試器windbg。Linux平台以gdb為常用。
IDE自帶的調試器以VC6.0為例,編寫完代碼後,按快截鍵盤F11,即可進入調試,此時右鍵,選擇「go to disassembly"即可查看到程序的反匯編代碼 。一般這種情況,主要是為了對C語言進行反匯編學習。