資源描述:
《《vc程序調(diào)試技術(shù)轉(zhuǎn)》word版》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。
1、VC程序調(diào)試技術(shù)轉(zhuǎn)VC程序調(diào)試技術(shù)[轉(zhuǎn)]2010-04-2416:49在開(kāi)發(fā)程序的過(guò)程中,經(jīng)常需要查找程序中的錯(cuò)誤,這就需要利用調(diào)試工具來(lái)幫助你進(jìn)行程序的調(diào)試,當(dāng)然目前有許多調(diào)試工具,而集成在VC中的調(diào)試工具以其強(qiáng)大的功能,一定使你愛(ài)不釋手。下面我們先來(lái)介紹VC中的調(diào)試工具的使用。1VC調(diào)試工具1.1調(diào)試環(huán)境的建立在VC中每當(dāng)建立一個(gè)工程(Project)時(shí),VC都會(huì)自動(dòng)建立兩個(gè)版本:Release版本,和Debug版本,正如其字面意思所說(shuō)的,Release版本是當(dāng)程序完成后,準(zhǔn)備發(fā)行時(shí)用來(lái)編譯的版本,而Debug版本是用在開(kāi)發(fā)過(guò)程中進(jìn)行調(diào)試時(shí)
2、所用的版本。DEBUG版本當(dāng)中,包含著MICROSOFT格式的調(diào)試信息,不進(jìn)行任何代碼優(yōu)化,而在RELEASE版本對(duì)可執(zhí)行程序的二進(jìn)制代碼進(jìn)行了優(yōu)化,但是其中不包含任何的調(diào)試信息。在新建立的工程中,你所看到是DEBUG版本,若要選擇RELEASE版本,可以選擇菜單PROJECT中的SETTING命令,這時(shí)屏幕上面彈出PROJECTSETTEING對(duì)話框,在SETTINGFOR下拉列表中選擇RELEASE,按OK退出。在調(diào)試程序的時(shí)候必須使用DEBUG版本,我們可以在ProjectSetting對(duì)話框的C/C++頁(yè)中設(shè)置調(diào)試選項(xiàng)。各個(gè)選項(xiàng)的含意如
3、下:ProgramDatabase表示產(chǎn)生一個(gè)存儲(chǔ)程序信息的數(shù)據(jù)文件(.PDB),它包含了類型信息和符號(hào)化的調(diào)試信息;LineNumbersOnly表示程序經(jīng)過(guò)編譯和鏈接產(chǎn)生的.OBJ或.EXE文件僅僅包含全局和外部符號(hào)以及行號(hào)信息;C7Compatible表示產(chǎn)生一個(gè).OBJ或.EXE文件行號(hào)信息以及符號(hào)化的調(diào)試信息;None表示不產(chǎn)生任何調(diào)試信息。1.2調(diào)試的一般過(guò)程調(diào)試,說(shuō)到底就是在程序的運(yùn)行過(guò)程的某一階段觀測(cè)程序的狀態(tài),而在一般情況下程序是連續(xù)運(yùn)行的,所以我們必須使程序在某一地點(diǎn)停下來(lái)。所以我們所做的第一項(xiàng)工作就是設(shè)立斷點(diǎn)。其次,再運(yùn)行
4、程序,當(dāng)程序在設(shè)立斷點(diǎn)處停下來(lái)時(shí),再利用各種工具觀察程序的狀態(tài)。程序在斷點(diǎn)停下來(lái)后,有時(shí)我們需要按我們的要求控制程序的運(yùn)行,以進(jìn)一步觀測(cè)程序的流向,所以下面我們依次來(lái)介紹斷點(diǎn)的設(shè)置,如何控制程序的運(yùn)行以及各種觀察工具的利用。1.3如何設(shè)置斷點(diǎn)在VC中,你可以設(shè)置多種類型的斷點(diǎn),我們可以根據(jù)斷點(diǎn)起作用的方式把這些斷點(diǎn)分為三類:1、與位置有關(guān)的斷點(diǎn);2、與邏輯條件有關(guān)的斷點(diǎn)3、與WINDOWS消息有關(guān)的斷點(diǎn)下面我們分別介紹這三類斷點(diǎn)。首先我們介紹與位置有關(guān)的斷點(diǎn)。1、最簡(jiǎn)單的是設(shè)置一般位置斷點(diǎn),你只要把光標(biāo)移到你要設(shè)斷點(diǎn)的位置,當(dāng)然這一行必須包含一
5、條有效語(yǔ)句的;然后按工具條上的add/removebreakpoint按鈕或按快捷鍵F9;這時(shí)你將會(huì)在屏幕上看到在這一行的左邊出現(xiàn)一個(gè)紅色的圓點(diǎn)表示這二設(shè)立了一個(gè)斷點(diǎn)。2、有的時(shí)候你可能并不需要程序每次運(yùn)行到這兒都停下來(lái),而是在滿足一定條件的情況下才停下來(lái),這時(shí)你就需要設(shè)置一種與位置有關(guān)的邏輯斷點(diǎn)。要設(shè)置這種斷點(diǎn)我們只需要從EDIT菜單中選中breakpoint命令,這時(shí)Breakpoint對(duì)話框?qū)?huì)出現(xiàn)在屏幕上。選中Breakpoint對(duì)話框中的LOCATION標(biāo)簽,使LOCATION頁(yè)面彈出。單擊condition按鈕,彈出Breakpoi
6、nt對(duì)話框,在Expression編輯框中寫(xiě)出你的邏輯表達(dá)式,如X=3或a+b25,最后按OK返回。這種斷點(diǎn)主要是由其位置發(fā)生作用的,但也結(jié)合了邏輯條件,使之更靈活。3、有時(shí)我們需要更深入地調(diào)試程序,我們需要進(jìn)入程序的匯編代碼,因此我們需要在在匯編代碼上設(shè)立斷點(diǎn):要設(shè)立這種斷點(diǎn)我們只需從View菜單中選Debugwindow命令。再選Disassembly子命令,這時(shí)匯編窗口將會(huì)出現(xiàn)在屏幕上。在匯編窗口中你將看到對(duì)應(yīng)于源程序的匯編代碼,其中源程序是用黑體字顯示,下面是且對(duì)應(yīng)的匯編代碼。要設(shè)立斷點(diǎn),我們只需將光標(biāo)移到你想設(shè)斷點(diǎn)處然后點(diǎn)擊工具條上的
7、Insert/RemoveBreakpoints按鈕,此后你將會(huì)看到一個(gè)紅圓點(diǎn)出現(xiàn)在該匯編代碼的右邊。上面所講的斷點(diǎn)主要是由于其位置發(fā)揮作用的,即當(dāng)程序運(yùn)行到設(shè)立斷點(diǎn)的地方時(shí)程序?qū)?huì)停下來(lái)。但有時(shí)我們?cè)O(shè)立只與邏輯條件有關(guān)的斷點(diǎn),而與位置無(wú)關(guān)。所以下面介紹一下與邏輯條件有關(guān)的斷點(diǎn)。(1)邏輯條件觸發(fā)斷點(diǎn)的設(shè)置:從EDIT菜單中選中breakpoint命令,這時(shí)屏幕上將會(huì)出現(xiàn)Breakpoint對(duì)話框。選中Breakpoint對(duì)話框中的DATA標(biāo)簽,對(duì)應(yīng)的頁(yè)面將會(huì)彈出。在DATA頁(yè)面中的Expression編輯框中寫(xiě)出你的邏輯表達(dá)式,如(X==3)
8、;最后按OK返回。其他幾種斷點(diǎn)的設(shè)置的方法都與之類似。我們一一加以說(shuō)明。(2)監(jiān)視表達(dá)式發(fā)生變化斷點(diǎn):從EDIT菜單中選中breakpoint命令,這