補(bǔ)充程序調(diào)試知識(shí)_第1頁
補(bǔ)充程序調(diào)試知識(shí)_第2頁
補(bǔ)充程序調(diào)試知識(shí)_第3頁
補(bǔ)充程序調(diào)試知識(shí)_第4頁
補(bǔ)充程序調(diào)試知識(shí)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

程序調(diào)試調(diào)試是一個(gè)程序員最基本的技能為了調(diào)試一個(gè)程序,首先必須使程序中包含調(diào)試信息打開Projectsettings對(duì)話框選擇C/C++頁,Category中選擇general,

選定DebugInfo下拉列表框中的選項(xiàng)

命令行Projectsettings說明無None沒有調(diào)試信息/ZdLineNumbersOnly目標(biāo)文件或者可執(zhí)行文件中只包含全局和導(dǎo)出符號(hào)以及代碼行信息,不包含符號(hào)調(diào)試信息/Z7C7.0-Compatible目標(biāo)文件或者可執(zhí)行文件中包含行號(hào)和所有符號(hào)調(diào)試信息,包括變量名及類型,函數(shù)及原型等/ZiProgramDatabase創(chuàng)建一個(gè)程序庫(PDB),包括類型信息和符號(hào)調(diào)試信息。/ZIProgramDatabaseforEditandContinue除了前面/Zi的功能外,這個(gè)選項(xiàng)允許對(duì)代碼進(jìn)行調(diào)試過程中的修改和繼續(xù)執(zhí)行。這個(gè)選項(xiàng)同時(shí)使#pragma設(shè)置的優(yōu)化功能無效選擇Link頁,選中復(fù)選框"GenerateDebugInfo",這個(gè)選項(xiàng)將使連接器把調(diào)試信息寫進(jìn)可執(zhí)行文件和DLL

如果C/C++頁中設(shè)置了ProgramDatabase以上的選項(xiàng),則Linkincrementally可以選擇。選中這個(gè)選項(xiàng),將使程序可以在上一次編譯的基礎(chǔ)上被編譯(即增量編譯),而不必每次都從頭開始編譯設(shè)置和取消斷點(diǎn)

斷點(diǎn)是為調(diào)試器設(shè)置的一個(gè)代碼執(zhí)行暫停位置。當(dāng)程序運(yùn)行到斷點(diǎn)時(shí),程序中斷執(zhí)行,回到調(diào)試器。設(shè)置斷點(diǎn):把光標(biāo)移動(dòng)到需要設(shè)置斷點(diǎn)的代碼行上,按F9鍵按CTRL+B或ALT+F9,或者通過菜單

Edit/Breakpoints打開Breakpoints對(duì)話框,設(shè)置

合適的斷點(diǎn)行取消斷點(diǎn):把光標(biāo)移動(dòng)到給定斷點(diǎn)所在的行,按F9打開Breakpoints對(duì)話框進(jìn)行設(shè)置斷點(diǎn)類型條件斷點(diǎn):單擊Conditions,為斷點(diǎn)設(shè)置一個(gè)表達(dá)式。當(dāng)這個(gè)表達(dá)式為真時(shí),程序就被中斷數(shù)據(jù)斷點(diǎn):只能在Breakpoints的“Data”頁中設(shè)置。在編輯框中輸入一個(gè)表達(dá)式,當(dāng)這個(gè)表達(dá)式的值發(fā)生變化時(shí),數(shù)據(jù)斷點(diǎn)就到達(dá)。例如:在編輯框中輸入g_bFlag這個(gè)全局變量的名字,那么當(dāng)程序中有g(shù)_bFlag=!g_bFlag時(shí),程序就將停在這個(gè)語句處。斷點(diǎn)類型消息斷點(diǎn):VC也支持對(duì)Windows消息進(jìn)行截獲。有兩種截獲方式:窗口消息處理函數(shù)和特定消息中斷。在Breakpoints對(duì)話框中選擇Messages頁,就可以設(shè)置消息斷點(diǎn)。如果在對(duì)話框中寫入消息處理函數(shù)的名字,那么每次消息被這個(gè)函數(shù)處理,斷點(diǎn)就到達(dá)。如果在底下的下拉列表框選擇一個(gè)消息,則每次這種消息到達(dá),程序就中斷。觀看變量的值:當(dāng)斷點(diǎn)到達(dá)時(shí),把光標(biāo)移動(dòng)到這個(gè)變量上,停留一會(huì)就可以看到變量的值。利用Watch機(jī)制,在斷點(diǎn)狀態(tài)下,在變量上單擊右鍵,選擇QuickWatch,就彈出一個(gè)對(duì)話框,顯示這個(gè)變量的值。觀看變量和表達(dá)式的值:單擊View/Debug/Watch,就出現(xiàn)一個(gè)Watch視圖(Watch1,Watch2,Watch3,Watch4),在該視圖中輸入變量或者表達(dá)式,就可以觀察變量或者表達(dá)式的值。觀察值由于指針指向的數(shù)組,Watch只能顯示第一個(gè)元素的值。為了顯示數(shù)組的后續(xù)內(nèi)容,或者要顯示一片內(nèi)存的內(nèi)容,可以使用memory功能。在Debug工具條上點(diǎn)memory按鈕,就彈出一個(gè)對(duì)話框,在其中輸入地址,就可以顯示該地址指向的內(nèi)存的內(nèi)容。

內(nèi)存值Debug工具條上的Varibles按鈕彈出一個(gè)框,顯示所有當(dāng)前執(zhí)行上下文中可見的變量的值。特別是當(dāng)前指令涉及的變量,以紅色顯示。變量值

Debug工具條上的Reigsters按鈕彈出一個(gè)框,顯示當(dāng)前的所有寄存器的值。寄存器值

VC允許被中斷的程序繼續(xù)運(yùn)行、單步運(yùn)行和運(yùn)行到指定光標(biāo)處,分別對(duì)應(yīng)快捷鍵F5、F10/F11和CTRL+F10。

進(jìn)程控制

快捷鍵說明F5繼續(xù)運(yùn)行F10單步,如果涉及到子函數(shù),不進(jìn)入子函數(shù)內(nèi)部F11單步,如果涉及到子函數(shù),進(jìn)入子函數(shù)內(nèi)部CTRL+F10運(yùn)行到當(dāng)前光標(biāo)處。調(diào)用堆棧反映了當(dāng)前斷點(diǎn)處函數(shù)是被那些函數(shù)按照什么順序調(diào)用的。單擊Debug工具條上的Callstack就顯示CallStack對(duì)話框。在CallStack對(duì)話框中顯示了一個(gè)調(diào)用系列,最上面的是當(dāng)前函數(shù),往下依次是調(diào)用函數(shù)的上級(jí)函數(shù)。單擊這些函數(shù)名可以跳到對(duì)應(yīng)的函數(shù)中去。調(diào)用堆棧對(duì)于.c文件,由于不能包含stdafx.h,因此可以通過Projectsettings把它的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論