資源描述:
《《編譯器配置》PPT課件》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、VisualC++調(diào)試1編譯器配置debug模式連編的Project將產(chǎn)生一個很大且相當(dāng)慢的可執(zhí)行程序原因:包含了許多調(diào)試信息所有的編譯器優(yōu)化功能被禁用release模式編譯同一程序得到一個小而快的可執(zhí)行程序但無法逐步查看:源代碼調(diào)試信息2release模式測試進(jìn)行全面的測試提交給用戶使用之前在release模式下重新連編之后3什么是調(diào)試?是指更正或修改應(yīng)用程序代碼的過程,用來保證應(yīng)用程序可以進(jìn)行生成、平穩(wěn)運(yùn)行、按預(yù)期方式執(zhí)行,并且易于日后維護(hù)VisualC++提供了各種工具來跟蹤代碼中的錯誤。這些工具還能幫助分析應(yīng)用程序是如何執(zhí)
2、行的4錯誤類型編譯錯誤:生成代碼不正確時產(chǎn)生的錯誤運(yùn)行錯誤:應(yīng)用程序在運(yùn)行時發(fā)生的錯誤,運(yùn)行環(huán)境檢測到一個不可能執(zhí)行的操作邏輯錯誤:當(dāng)應(yīng)用程序未按預(yù)期目標(biāo)執(zhí)行時發(fā)生的錯誤5調(diào)試工具調(diào)試工具提供應(yīng)用程序當(dāng)前狀態(tài)的一個快照,其中包括:應(yīng)用程序用戶界面的外觀成員變量和表達(dá)式的值活動的過程調(diào)用:在應(yīng)用程序中已開始運(yùn)行,還未結(jié)束運(yùn)行的過程6調(diào)試工具(續(xù))斷點(diǎn):應(yīng)用程序中的一個位置,程序執(zhí)行到此會中斷,允許檢查應(yīng)用程序的代碼,變量,甚至修改,然后繼續(xù)執(zhí)行,或者終止執(zhí)行7調(diào)試工具(續(xù))檢查變量值察看變量和表達(dá)式值的方法是使用數(shù)據(jù)提示彈出信息數(shù)據(jù)
3、提示同工具提示類似,當(dāng)鼠標(biāo)放置在一個變量上時,數(shù)據(jù)提示顯示該變量當(dāng)前的值8避免錯誤下列方法用來避免應(yīng)用程序中的錯誤:精心設(shè)計應(yīng)用程序必須包含注釋對象應(yīng)盡可能的顯式引用在應(yīng)用程序中,變量和對象應(yīng)有一致的命名方案9調(diào)試技巧簡化調(diào)試瀏覽代碼,并盡可能的發(fā)現(xiàn)引起問題的語句在這些語句上設(shè)置斷點(diǎn),重新啟動應(yīng)用程序測試重要變量和屬性的值跟蹤難纏的錯誤備份是非常重要的使用內(nèi)建于開發(fā)環(huán)境中的調(diào)試工具任何與該問題不相關(guān)的代碼應(yīng)該排除10設(shè)置調(diào)試選項和級別利用ProjectSetting對話框的C++選項卡,選擇GeneralCategory后,可得到
4、以下的條目:WarningLevel(一般類別)編譯器警告信息的級別默認(rèn)級別:Level3級別報告的警告None不報告任何警告Level1僅報告最嚴(yán)重的錯誤Level2報告一些不太嚴(yán)重的錯誤消息Level3報告所有合理的警告Level4非常敏感,適用于完美主義者11跟蹤和單步調(diào)試交互式單步調(diào)試一次執(zhí)行一行代碼,在執(zhí)行過程中檢查變量的內(nèi)容。在代碼中設(shè)置斷點(diǎn)使程序到達(dá)一個斷點(diǎn)之前持續(xù)運(yùn)行,并在該斷點(diǎn)停下來;允許從斷點(diǎn)處開始單步調(diào)試,知道你想連續(xù)運(yùn)行程序跟蹤語句可在輸出窗口顯示程序中的消息和變量斷言在與指定的條件不為TRUE時使程序運(yùn)行
5、中止12調(diào)試工具欄圖2顯示VisualC++中Debug菜單圖213使用斷點(diǎn)和單步調(diào)試程序設(shè)置斷點(diǎn)的步驟:在代碼中任何地方設(shè)置斷點(diǎn)通過調(diào)試程序運(yùn)行程序當(dāng)運(yùn)行之?dāng)帱c(diǎn)時,斷點(diǎn)處的代碼將顯示在編輯器窗口中,為單步調(diào)試或繼續(xù)運(yùn)行程序做好準(zhǔn)備。加入一個斷點(diǎn)時,在指定的有效代碼行旁出現(xiàn)一個小紅圓圈。斷點(diǎn)只能加在有效代碼行中要得到變量的詳細(xì)信息可把變量拖進(jìn)Watch窗口中14使用斷點(diǎn)和單步調(diào)試程序(續(xù))按鈕/單步調(diào)試選項快捷鍵選擇后的效果StepIntoF11調(diào)試程序?qū)?zhí)行當(dāng)前行,如果光標(biāo)在一個函數(shù)調(diào)用上,將進(jìn)入那個函數(shù)體。StepOverF1
6、0與StepInto的區(qū)別僅在于:當(dāng)光標(biāo)在一個函數(shù)調(diào)用上時,它以正常速度運(yùn)行此函數(shù),并在此函數(shù)中返回時停止,同時給出它的運(yùn)行結(jié)果。StepOutShift+F11調(diào)試程序以正常速度運(yùn)行當(dāng)前函數(shù)的其余部分,并在從此函數(shù)中返回到調(diào)用它的函數(shù)時停止RuntoCursorCtrl+F10在到達(dá)指定的光標(biāo)位置之前調(diào)試程序持續(xù)運(yùn)行??赏ㄟ^單擊想要運(yùn)行到的行來設(shè)定此位置。下表列出了可用的單步調(diào)試選項:15使用斷點(diǎn)和單步調(diào)試程序(續(xù))按鈕/單步調(diào)試選項快捷鍵選擇后的效果GoF5以正常的速度繼續(xù)運(yùn)行程序,直至遇到了下一個斷點(diǎn)StopDebuggin
7、gShift+F5停止調(diào)試程序,返回編輯模式RestartCtrl+Shift+F5從頭開始運(yùn)行程序,并在代碼的第一行停下來BreakExecution將以正常速度運(yùn)行的程序停止在斷點(diǎn)處ApplyCodeChangesAlt+F10在調(diào)試會話期間對改動的代碼進(jìn)行編譯,并從當(dāng)前斷點(diǎn)繼續(xù)調(diào)試16使用Edit和ContinueVC++重要的特性:EditContinue在調(diào)試程序中停止運(yùn)行程序時,可以改變或編輯代碼使用debug菜單的ApplycodeChange選項,編譯更改后的新代碼繼續(xù)調(diào)試這部分新代碼在調(diào)試時解決代碼錯誤,從具有同
8、樣變量設(shè)置的代碼的同一位置繼續(xù)調(diào)試運(yùn)行。17調(diào)試窗口Watch窗口允許從鍵盤鍵入變量名,或從編輯器窗口將變量名拖進(jìn)來所顯示的變量值列在窗口中,直到超出變量的作用域為止。有4個選項卡:Watch1,Watch2,Watch3和Watch4每個選項卡顯