![VisualStudio調(diào)試技巧_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/6b48755a-8b44-418f-809b-aa1c36dde77c/6b48755a-8b44-418f-809b-aa1c36dde77c1.gif)
![VisualStudio調(diào)試技巧_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/6b48755a-8b44-418f-809b-aa1c36dde77c/6b48755a-8b44-418f-809b-aa1c36dde77c2.gif)
![VisualStudio調(diào)試技巧_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/6b48755a-8b44-418f-809b-aa1c36dde77c/6b48755a-8b44-418f-809b-aa1c36dde77c3.gif)
![VisualStudio調(diào)試技巧_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/6b48755a-8b44-418f-809b-aa1c36dde77c/6b48755a-8b44-418f-809b-aa1c36dde77c4.gif)
![VisualStudio調(diào)試技巧_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/6b48755a-8b44-418f-809b-aa1c36dde77c/6b48755a-8b44-418f-809b-aa1c36dde77c5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、VC+ 實戰(zhàn)調(diào)試技巧前言:調(diào)試技巧的重要性與課程安排主講人:陽毅超 UIPower CTO調(diào)試技巧的重要性提高問題定位的速度更加精確的命中斷點沒有代碼運行環(huán)境定位問題提高處理GDI泄露,內(nèi)存泄露等疑難的處理效率提高分析與定位問題的能力本視頻的意義全實戰(zhàn)性質(zhì)的講解,只涉及對我們最為關(guān)鍵的調(diào)試技巧覆蓋到我們?nèi)粘J褂弥胁怀S玫浅S杏玫募记舍槍嶋H我們實際不同的調(diào)試情況進行示例講解提高分析與定位問題的能力注:使用vs2010進行代碼講解,適用于vs20032008,vc6稍有區(qū)別學習本視頻需要達到目標短時間內(nèi)掌握調(diào)試的關(guān)鍵技術(shù)掌握VisualStudio調(diào)試的高級而實用的技巧掌握WinDbg的使用技
2、巧掌握定位疑難問題,如內(nèi)存泄露,GDI泄露,程序偶現(xiàn)崩潰的處理方法掌握解決問題思路與步驟,利用調(diào)試技巧來確定范圍,定位問題本講座的課程安排第一講:VisualStudio下的C+調(diào)試方法描述: 介紹如何利用VisualStudio的調(diào)試屬性,各類斷點設(shè)置,利用pdb與dump文件來定位崩潰問題。第二講:WinDbg調(diào)試工具的調(diào)試方法描述:介紹利用WinDbg進行調(diào)試,定位dump堆棧,獲取程序運行信息的方法。第三講:定位問題方法與途徑描述:介紹各種解決各類問題的思路,介紹處理內(nèi)存泄露,GDI泄露等問題的方法VC+ 實戰(zhàn)調(diào)試技巧第一講:Visual Studio下的C+調(diào)試方法主講人:陽毅超 U
3、IPower CTO第一節(jié):調(diào)試工程配置調(diào)試屬性設(shè)置 工程的的調(diào)試屬性中,我們可以對調(diào)試的程序目錄及路徑進行設(shè)置。命令:通常為運行的EXE程序,例如當我們調(diào)試DLL工程時,我們的調(diào)試程序會設(shè)置為加載此DLL的exe程序。工作目錄: 通常為調(diào)試程序的運行目錄,當我們的程序需要使用相對路徑的外部資源時就需要使用此參數(shù)了,指定一個運行目錄給它。參數(shù): 為指定為命名運行的字符串數(shù)據(jù)第一節(jié):調(diào)試工程配置生成后事件1)當我們調(diào)試DLL工程的時候我們的調(diào)試命令通常是exe程序,每次完成編譯后我們需要手動將動態(tài)庫拷貝到exe所在目錄中。2)通過生成后事件我們可以自動完成拷貝動態(tài)庫等操作來提高我們的調(diào)試效率。3
4、)拷貝命令示例a)命名使用的是windows的cmd命令b) Copy “a.dll”“c:demo”c) Copy “C:*.dll”“c:demo”第二節(jié):基本調(diào)試方法啟動調(diào)試啟動提示,通過點擊VS工具欄上的調(diào)試按鈕 來對運行我們程序進入調(diào)試模式(F5)停止調(diào)試,啟動調(diào)試后通過點擊終止按鈕來停止調(diào)試( Shift+F5)暫停調(diào)試,如果程序中沒有命中斷點的情況下程序會順序的執(zhí)行代碼,在執(zhí)行過程中我們可以通過暫停按鈕來暫時停止代碼的執(zhí)行,程序會停止在當前的執(zhí)行代碼行中。點擊運行后又會繼續(xù)執(zhí)行第二節(jié):基本調(diào)試方法輸出窗口的使用當我們啟動調(diào)試程序之后我們可以使用調(diào)試窗口來獲取程序的運行信息。通過菜
5、單-視圖-輸出,我們則可以打開輸出窗口快捷鍵為alt+2啟動調(diào)試后系統(tǒng)會利用輸出窗口反饋程序中所有資源的加載順序和信息。第二節(jié):基本調(diào)試方法輸出窗口的使用對于有符號DLL,在輸出窗口內(nèi)將會顯示,“已加載”,表示掛在DLL對應的符號文件已經(jīng)完成加載,并觀察加載DLL路徑是否正確。此外輸出窗口還可以顯示程序調(diào)試運行過程中的輸出信息。我們可以在代碼中利用如OutputDebugString這樣的API將文本內(nèi)容輸出到輸出窗口中顯示以便于我們進行調(diào)試。第二節(jié):基本調(diào)試方法斷點窗口斷點窗口顯示程序中加載的所有斷點的位置及類型。通過菜單-調(diào)試-窗口-斷點或者快捷鍵Alt+F9,可以打開斷點窗口我們可以通過
6、斷點窗口的工具欄按鈕完成以下的操作:1、刪除所有的斷點或選定斷點2、禁用啟用所有的斷點或選中斷點,禁用后此斷點不會命中3、導出斷點或?qū)霐帱c第二節(jié):基本調(diào)試方法斷點窗口位置斷點的設(shè)置默認情況下我們通過F9鍵產(chǎn)生的斷點類型為位置類型,即只要代碼運行到此位置,即會立即產(chǎn)生命中。第二節(jié):基本調(diào)試方法斷點窗口條件斷點的設(shè)置條件斷點的命中條件可以進行配置,如某一個變量為真,或者等于某一特定數(shù)值時進行命中。我們先產(chǎn)生一處斷點,在編輯區(qū)左側(cè)斷點紅色圓形區(qū)域點擊右鍵,選擇條件斷點,選擇完畢之后會彈出一個對話框,提示我們輸入命中的條件。第二節(jié):基本調(diào)試方法斷點窗口命中次數(shù)斷點的設(shè)置命中次數(shù)斷點則可以設(shè)置當經(jīng)過此
7、處固定次數(shù)后才進行命中,可供選擇的命中次數(shù)條件是:總命中,等于某一次數(shù),大于等于某一次數(shù)或者幾倍于某一次數(shù)。第二節(jié):基本調(diào)試方法斷點窗口篩選器斷點的設(shè)置對特定的線程、計算機、進程進行斷點命中第二節(jié):基本調(diào)試方法斷點窗口命中條件斷點的設(shè)置命中調(diào)試斷點可以在命中此斷點時輸出信息到輸出窗口,并且可以直接打印輸出變量的數(shù)據(jù)第二節(jié):基本調(diào)試方法斷點窗口數(shù)據(jù)斷點的設(shè)置運行時斷點,只能啟動調(diào)試并且在暫停條件下才可以進行設(shè)置當指定的內(nèi)存地址數(shù)據(jù)發(fā)生變化的時候立即進行命中第二節(jié):基本調(diào)試方法斷點的調(diào)試運行一句代碼,遇到函數(shù)不進入函數(shù)體內(nèi)部( F10)跳出當前的函數(shù)( Shift+F11 )逐句調(diào)試運行,遇到函數(shù)
8、調(diào)用后進入函數(shù)內(nèi)部繼續(xù)調(diào)試。(F11)在一個堆棧中我們可以通過拖動運行指針來回退代碼運行位置。第二節(jié):基本調(diào)試方法堆棧窗口的使用通過斷點我們可以將程序“凍結(jié)”在某一個運行時刻,而通過堆棧窗口我們則可以看到程序當前狀態(tài)的函數(shù)調(diào)用順序。通過VS的菜單,“調(diào)試”-“窗口”-“調(diào)用堆?!被蛘咄ㄟ^Alt+7來打開堆棧窗口通過在窗口中雙擊函數(shù)名稱我們可以切換到對應的調(diào)用函數(shù)位置中?;疑拇頍o代碼和符號不可能已經(jīng)定位顯示。第二節(jié):基本調(diào)試方法自動變量窗口的使用自動變量窗口中顯示當前堆棧所執(zhí)行所在代碼行所使用的數(shù)據(jù)內(nèi)容,當我們切換到下一行代碼后自動變量窗口中的內(nèi)容會發(fā)生對應的變化。第二節(jié):基本調(diào)試方法局部變
9、量窗口的使用局部變量窗口顯示當前堆棧函數(shù)中所使用變量內(nèi)容。第二節(jié):基本調(diào)試方法線程窗口的使用線程窗口顯示當前程序線程的運行狀態(tài),在多線程程序開發(fā)中我們可以通過這個窗口了解線程的啟動和釋放情況。每個線程都有自己獨立的調(diào)用堆棧和變量堆棧,切換不同的線程我們會發(fā)現(xiàn)堆棧會發(fā)生對應的變化,在線程之前堆數(shù)據(jù)可以進行共享。黃色箭頭表示的是當前代碼運行指針所在的線程位置,此外我們還可以看到每個線程所執(zhí)行的函數(shù)體。第二節(jié):基本調(diào)試方法 模塊窗口的使用模塊窗口顯示當前程序所加載的所有模塊內(nèi)容。我們主要通過這個窗口來查看模塊是否被正常加載,加載路徑是否正確,并判斷所需的模塊的符號文件是否已經(jīng)找到。第二節(jié):基本調(diào)試方
10、法 監(jiān)視窗口與快速監(jiān)視窗口的使用在監(jiān)視窗口中我們可以定義我們所關(guān)注的變量,輸入變量的內(nèi)容我們即可獲取此變量的內(nèi)容。變量內(nèi)容超出當前堆棧顯示范圍后自動失效,變?yōu)榛疑?。此外我們可以在變量名上點擊右鍵,選擇“添加到監(jiān)視”則可以快速將變量設(shè)置到監(jiān)視窗口內(nèi)。第二節(jié):基本調(diào)試方法內(nèi)存窗口的使用當我們創(chuàng)建一塊圖片內(nèi)存后需要查看整塊內(nèi)存的數(shù)據(jù),或者查看某塊具體內(nèi)存地址的數(shù)據(jù)時我們就需要借助到內(nèi)存窗口了。輸入需要查看數(shù)據(jù)的地址即可瀏覽到地址上下文中的數(shù)據(jù)內(nèi)容。第二節(jié):基本調(diào)試方法VisualStudio附加到進程調(diào)試方法對已經(jīng)運行的程序進行調(diào)試此外F5調(diào)試啟動速度較慢,對于頻繁的調(diào)試不太方便,所以我們可以讓程序
11、先運行起來,通過附加進行的方式繼續(xù)調(diào)試。第三節(jié):利用PDB和dump進行調(diào)試的方法什么是pdb文件PDB文件是“程序數(shù)據(jù)庫”Program Data Base的簡稱,包含的程序的代碼信息通過這個文件我們可以查看對應斷點的位置,堆棧信息等內(nèi)容使用PDB使得我們無需代碼也可以掌握程序的堆棧運行狀態(tài)。第三節(jié):利用PDB和dump進行調(diào)試的方法如何得到pdb文件通常當我們編譯代碼后會自動生成一個PDB文件。在VS的工程屬性面板中選擇“鏈接器”-“調(diào)試”,則可以設(shè)置是否對pdb進行輸出,并指定pdb的輸出路徑。第三節(jié):利用PDB和dump進行調(diào)試的方法什么是dump文件dump文件是附加堆棧信息的存儲文
12、件的簡稱,文件擴展名是”.dmp”,通過dump文件我們可以得到程序運行某一時刻的堆棧數(shù)據(jù)。當我們程序意外崩潰后,通常程序會立即中斷運行,此時我們生成這一時刻的dump文件就可以通過此時的堆棧進行分析,找到崩潰的代碼并分析原因。第三節(jié):利用PDB和dump進行調(diào)試的方法如何得到dump文件在vs中進入調(diào)試狀態(tài)后中斷,在菜單中選擇“調(diào)試”-“將轉(zhuǎn)儲另存為”即可生成dump文件 如何加載pdb文件在VS中我們選擇“菜單”-工具-選項,選項窗口中選擇調(diào)試-符號設(shè)置pdb所在目錄,當調(diào)試時vs會自動加載模塊對應的pdb文件。第三節(jié):利用PDB和dump進行調(diào)試的方法利用VS定位崩潰點當程序出現(xiàn)崩潰后程序會讓我們中選擇對應處理方式。我們選擇取消,則會出現(xiàn)調(diào)試器的選擇窗口。我們選擇vs2010進行調(diào)試,如果我們擁有程序的代碼與動態(tài)庫對應的pdb文件,vs會自動斷點到程序崩潰的地點。第三節(jié):利用PDB和dump進行調(diào)試的方法利用VS定位崩潰點收集輸出dmp文件設(shè)置程序pdb文件目錄打開dmp文件,運行dmp通過堆棧定位問題函數(shù)通過代碼定位問題函數(shù)具體代碼位置第四節(jié):實際應用場景分析應用場景描述有源代碼的exe程序的調(diào)試定位鼠標滾輪消息通過windowproc定位鼠標滾輪消息通
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit 9 What's your hobby 說課稿(說課稿)-2024-2025學年湘少版(三起)英語五年級上冊
- Unit 3 What Would you like(說課稿)-2024-2025學年人教PEP版英語五年級上冊
- 2023九年級數(shù)學上冊 第六章 反比例函數(shù)1 反比例函數(shù)說課稿 (新版)北師大版
- 10《爬山虎的腳》說課稿-2024-2025學年語文四年級上冊統(tǒng)編版
- 2023三年級英語下冊 Unit 2 Animals at the Zoo Lesson 8 Tigers and Bears說課稿 冀教版(三起)
- 2025民間個人借款合同書范文
- 2024-2025學年高一歷史第13周 6.2卓爾不群的雅典說課稿
- 2025常年法律顧問合同
- 19《一只窩囊的大老虎》第二課時(說課稿)-2024-2025學年統(tǒng)編版語文四年級上冊001
- 2025獨家經(jīng)銷合同范本
- 2024年全國職業(yè)院校技能大賽(礦井災害應急救援賽項)考試題庫(含答案)
- 2025江蘇南京市金陵飯店股份限公司招聘高頻重點提升(共500題)附帶答案詳解
- 公共政策分析 課件匯 陳振明 第0-9章 導論、緒論:政策科學的“研究綱領(lǐng)”- 政策監(jiān)控
- C語言程序設(shè)計 教案
- 2025年牛津譯林版英語七年級下冊全冊單元重點知識點與語法匯編
- 《小學作文指導》課件
- 小學六年級數(shù)學方程應用題100道及答案解析
- 2025新譯林版英語七年級下單詞表
- 海洋工程設(shè)備保溫保冷方案
- 文藝演出排練指導服務合同
- 人教版(2024新版)一年級上冊數(shù)學第一單元《數(shù)學游戲》單元整體教學設(shè)計
評論
0/150
提交評論