




已閱讀5頁,還剩45頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
程序調(diào)試技術(shù)雜談,武漢天喻軟件有限責(zé)任公司國家企業(yè)信息化應(yīng)用支撐軟件工程技術(shù)研究中心,C+培訓(xùn)系列,內(nèi)容,程序的錯(cuò)誤分類程序的生成生成的配置管理程序的調(diào)試和調(diào)試相關(guān)的配置設(shè)置幾種類型文件的調(diào)試程序設(shè)計(jì)中的建議備注:不講解Web和遠(yuǎn)程調(diào)試,程序錯(cuò)誤類型,生成錯(cuò)誤由編譯系統(tǒng)來檢查:將警告的級別提高到最高級;啟動(dòng)代碼分析工具怎樣看各種連接錯(cuò)誤邏輯錯(cuò)誤程序流程中地錯(cuò)誤,需要調(diào)試人員對程序的執(zhí)行邏輯有清楚的認(rèn)識(shí)結(jié)合調(diào)試工具定位錯(cuò)誤的位置和原因,程序的生成配置,解決方案和項(xiàng)目配置,解決方案配置項(xiàng)目之間的依賴關(guān)系;啟動(dòng)項(xiàng)目可以執(zhí)行多個(gè)項(xiàng)目調(diào)試進(jìn)行配置管理項(xiàng)目配置確定各個(gè)項(xiàng)目的內(nèi)部生成屬性系統(tǒng)默認(rèn)情況下生成“調(diào)試”配置和“發(fā)布”配置。自動(dòng)配置“調(diào)試”配置以便調(diào)試應(yīng)用程序,配置“發(fā)布”配置以便用于應(yīng)用程序的最終發(fā)布配置管理器的使用,配置管理器使用,程序調(diào)試,調(diào)試設(shè)置程序中的應(yīng)用啟動(dòng)調(diào)試的方法第三方程序應(yīng)用程序DLL調(diào)試執(zhí)行及相關(guān)控制,調(diào)試器設(shè)置,啟動(dòng)調(diào)試設(shè)置界面,理解各個(gè)選項(xiàng)的含義“工具”-“選項(xiàng)”對話框-“調(diào)試”文件夾-選擇所需選項(xiàng)的類別,C+調(diào)試配置的項(xiàng)目設(shè)置,C+調(diào)試配置的項(xiàng)目設(shè)置,C+調(diào)試配置的項(xiàng)目設(shè)置,C+調(diào)試配置的項(xiàng)目設(shè)置,在VisualC+中啟用調(diào)試功能,在VisualC+中啟用調(diào)試,如果在編譯程序時(shí)定義了_DEBUG符號(hào),則將啟用某些調(diào)試功能(如斷言)??梢杂孟铝袃煞N方法之一定義_DEBUG在源代碼中指定#define_DEBUG,指定/D_DEBUG編譯器選項(xiàng)。(如果是在VisualStudio中使用向?qū)?chuàng)建項(xiàng)目,則/D_DEBUG將在“調(diào)試”配置中自動(dòng)定義。)在定義了_DEBUG后,編譯器將編譯包圍在#ifdef_DEBUG和#endif內(nèi)的代碼段,程序數(shù)據(jù)庫(PDB)文件,作用保存著調(diào)試和項(xiàng)目狀態(tài)信息指定符號(hào)路徑“工具”菜單-“選項(xiàng)”對話框-“調(diào)試”節(jié)點(diǎn)-“符號(hào)”類別:“符號(hào)文件(.pdb)位置”手動(dòng)加載符號(hào)從“模塊”窗口中手動(dòng)加載DBG文件,啟動(dòng)調(diào)試的方法,啟動(dòng)調(diào)試的方法,不屬于解決方案的可執(zhí)行文件,在VisualStudio外部啟動(dòng)可執(zhí)行文件并使用VisualStudio調(diào)試器附加到該文件需要手動(dòng)執(zhí)行一些步驟,不能調(diào)試啟動(dòng)過程中發(fā)生的問題,不能調(diào)試不等待用戶輸入而迅速完成的程序?yàn)榇祟惓绦騽?chuàng)建EXE項(xiàng)目,屬于解決方案的調(diào)試,EXEDLL控制臺(tái),調(diào)試的啟動(dòng),調(diào)試的啟動(dòng),調(diào)試命令,啟動(dòng),逐語句,逐過程調(diào)試多進(jìn)程停止調(diào)試或停止執(zhí)行調(diào)試中斷達(dá)到斷點(diǎn);發(fā)生異常;手工中斷更改調(diào)試多個(gè)程序時(shí)的中斷行為工具”-“選項(xiàng)”-“調(diào)試”-“常規(guī)”-“一個(gè)進(jìn)程中斷時(shí)則中斷所有進(jìn)程”,單步執(zhí)行,逐語句逐過程跳出單步執(zhí)行特定函數(shù)運(yùn)行到指定位置設(shè)置斷點(diǎn)運(yùn)行到光標(biāo)位置運(yùn)行到指定函數(shù)查找函數(shù)設(shè)斷點(diǎn)在“調(diào)用堆?!贝翱谥校覔粼摵瘮?shù)名,并從快捷菜單中選擇“運(yùn)行到光標(biāo)處”。,調(diào)試斷點(diǎn),斷點(diǎn),簡單斷點(diǎn)“調(diào)試”-”切換斷點(diǎn)”源代碼行的最左邊空白鼠標(biāo)左鍵單擊指定源代碼行的右鍵菜單地址斷點(diǎn)“反匯編”窗口中采用上面的方法設(shè)置函數(shù)斷點(diǎn)刪除、啟用、禁用斷點(diǎn)刪除、啟用、禁用所有斷點(diǎn),斷點(diǎn),編輯斷點(diǎn)位置指定斷點(diǎn)篩選器指定命中次數(shù)指定斷點(diǎn)條件指定跟蹤點(diǎn)/斷點(diǎn)操作,調(diào)試器中的數(shù)據(jù)查看,使用數(shù)據(jù)提示功能可視化工具變量窗口快速監(jiān)視對話框寄存器窗口內(nèi)存窗口調(diào)用堆棧窗口反匯編窗口模塊窗口,調(diào)試器中的表達(dá)式,VisualStudio調(diào)試器包括表達(dá)式計(jì)算器,當(dāng)您在“快速監(jiān)視”對話框、“監(jiān)視”窗口或“即時(shí)”窗口中輸入表達(dá)式時(shí),這些計(jì)算器可以對其進(jìn)行計(jì)算。這些表達(dá)式計(jì)算器還可以在“斷點(diǎn)”窗口和調(diào)試器中的許多其他位置使用,異常處理(調(diào)試),調(diào)試器識(shí)別下列類別的異常:C+異常公共語言運(yùn)行時(shí)異常托管調(diào)試助手本機(jī)運(yùn)行時(shí)檢查Win32異常,異常處理(調(diào)試),在引發(fā)異常時(shí)中斷的方法異常中斷的管理,本機(jī)代碼程序,調(diào)試優(yōu)化的代碼使用_debugbreak函數(shù)使用斷言內(nèi)存泄漏的檢測和隔離,斷言,通過在代碼中大量使用斷言,可以在開發(fā)期間捕捉許多錯(cuò)誤。為所做的每個(gè)假定編寫一個(gè)斷言是很好的規(guī)則。例如,如果假定某個(gè)參數(shù)不為NULL,請使用一條斷言語句檢查該假定,CRT斷言,_ASSERT,_ASSERTE使用斷言一般不需要使用printf檢查堆是否損壞_ASSERTE(_CrtCheckMemory();檢查指針有效性_ASSERTE(_CrtIsValidPointer(address,size,TRUE);_ASSERTE(_CrtIsValidPointer(myData);檢查內(nèi)存塊_ASSERTE(_CrtIsMemoryBlock(myData,size,MFC斷言,ASSERT,VERIFY(注意ASSERT的副作用)ASSERT(pObject1-IsKindOf(RUNTIME_CLASS(CPerson);CObject:AssertValidASSERT_VALID(m_pDataList);可以使用斷言來捕捉邏輯錯(cuò)誤,進(jìn)行結(jié)果檢查,測試錯(cuò)誤條件,內(nèi)存泄漏的檢測和隔離,CRT啟用內(nèi)存泄漏檢測,#define_CRTDBG_MAP_ALLOC#include#include,將malloc和free函數(shù)映射到其“Debug”版本_malloc_dbg和_free_dbg,程序結(jié)束時(shí)調(diào)用_CrtDumpMemoryLeaks();,或程序開始時(shí)調(diào)用_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF);,MFC內(nèi)存泄漏檢測,#definenewDEBUG_NEWAfxEnableMemoryTrackingafxMemDF,MFC調(diào)試,AfxDebugBreakTRACE宏Err,hr0 x80000004,hr,程序設(shè)計(jì)中的建議,編寫必要的注釋盡可能正確使用ASSERT()對輸入不信任,對輸出保證其正確性代碼命名的規(guī)范,程序設(shè)計(jì)中的建議,編寫必要的注釋,程序設(shè)計(jì)中的建議,BOOLCGlobalSetting_EE:WriteProfileStringEx(LPCTSTRpszElement,LPCTSTRpszKeyAttr,LPCTSTRpszKeyAttrValue,LPCTSTRpszWriteAttrName,LPCTSTRpszWriteAttrValue)if(NULL=m_pXMLConfig)returnFALSE;ASSERT(AfxIsValidString(pszElement);ASSERT(AfxIsValidString(pszKeyAttr);ASSERT(AfxIsValidString(pszKeyAttrValue);if(!pszElement|!pszKeyAttr|!pszKeyAttrValue)returnFALSE;/.,對輸入不信任,對輸出保證其正確性盡可能正確使用ASSERT(),程序設(shè)計(jì)中的建議,盡量用const和inline而不用#define,#definemax(a,b)(a)(b)?(a):(b),inta=5,b=0;max(+a,b);/a的值增加了2次max(+a,b+10);/a的值只增加了1次,inlineintmax(inta,intb)returnab?a:b;,templateinlineconstT,程序設(shè)計(jì)中的建議,盡量用new和delete而不用malloc和free,malloc和free(及其變體)會(huì)產(chǎn)生問題的原因在于它們太簡單:他們不知道構(gòu)造函數(shù)和析構(gòu)函數(shù),程序設(shè)計(jì)中的建議,對應(yīng)的new和delete要采用相同的形式指針初始化為NULL,delete之后設(shè)置為NULL,string*stringptr1=newstring;string*stringptr2=newstring100;.deletestringptr1;/刪除一個(gè)對象Stringptr1=NULL;deletestringptr2;/刪除對象數(shù)組Stringptr2=NULL;,程序設(shè)計(jì)中的建議,在operator=中檢查給自己賦值的情況,c.,程序設(shè)計(jì)中的建議,盡可能使用const,char*p=hello;/非const指針,/非const數(shù)據(jù)constchar*p=hello;/非const指針,/const數(shù)據(jù)char*constp=hello;/const指針,/非const數(shù)據(jù)constch
溫馨提示
- 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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鄉(xiāng)村中醫(yī)藥服務(wù)保障體系的優(yōu)化與完善
- 2025年信息安全工程師執(zhí)業(yè)資格考試試卷
- 2025年農(nóng)村經(jīng)濟(jì)與發(fā)展研究考試卷及答案
- 2025年甘肅省農(nóng)業(yè)科學(xué)院招聘工作人員筆試參考題庫及完整答案詳解1套
- 特殊作業(yè)危險(xiǎn)管理制度
- 特殊奶粉銷售管理制度
- 環(huán)保設(shè)施項(xiàng)目管理制度
- 班組工作達(dá)標(biāo)管理制度
- 專職勞務(wù)管理制度
- 業(yè)主技術(shù)管理制度
- 成人禮儀式策劃書
- 部編版八年級語文下冊實(shí)踐性作業(yè)教案
- GB/T 40516-2021J類船用法蘭連接金屬閥門的結(jié)構(gòu)長度
- GB/T 22562-2008電梯T型導(dǎo)軌
- 企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化評價(jià)表
- 學(xué)校學(xué)生評教表
- 長效在淋巴瘤化療中的支持應(yīng)用課件
- 風(fēng)力發(fā)電場集電線路優(yōu)化分析
- 2023高考地理高三一輪復(fù)習(xí)教學(xué)計(jì)劃和備考策略
- 快遞郵寄申請表
- 隔油池圖集pdf國標(biāo)圖集
評論
0/150
提交評論