WinDbg的使用與高級調(diào)試技巧_第1頁
WinDbg的使用與高級調(diào)試技巧_第2頁
WinDbg的使用與高級調(diào)試技巧_第3頁
WinDbg的使用與高級調(diào)試技巧_第4頁
WinDbg的使用與高級調(diào)試技巧_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、VC+ 實戰(zhàn)調(diào)試技巧前言:上節(jié)內(nèi)容回顧與本節(jié)內(nèi)容介紹主講人:陽毅超 UIPower CTO上節(jié)內(nèi)容回顧調(diào)試工程配置VisualStudio下基本調(diào)試方法利用pdb和dmp文件定位問題實際應(yīng)用場景分析,VS調(diào)試技巧的綜合演練本節(jié)內(nèi)容介紹WinDbg的基本使用方法利用WinDbg生成dump與分析dump文件利用WinDbg進(jìn)行遠(yuǎn)程調(diào)試WinDbg的高級調(diào)試技巧VC+ 實戰(zhàn)調(diào)試技巧第二講:WinDbg的使用與高級調(diào)試技巧主講人:陽毅超 UIPower CTO第一節(jié):WinDbg的基本使用方法什么是WinDbg WinDbg是windows平臺下對內(nèi)核,應(yīng)用程序,服務(wù)程序進(jìn)行調(diào)試的工具。相對VS而言

2、更加小巧,功能卻比VS豐富,支持內(nèi)核模式和用戶模式的調(diào)試。WinDbg的下載WinDbg包含在Windows調(diào)試開發(fā)包當(dāng)中http:/ Studio with integrated Windows debuggers Microsoft Windows Debugger (WinDbg) Microsoft Kernel Debugger (KD) NTKD Microsoft Console Debugger (CDB) Microsoft NT Symbolic Debugger (NTSD) 第一節(jié):WinDbg的基本使用方法Windows下的6種調(diào)試器的區(qū)別第一節(jié):WinDbg的基本使

3、用方法WinDbg的調(diào)試模式內(nèi)核模式(Kernel-Mode)與用戶模式(User-Mode)內(nèi)核模式(Kernel-Mode)為了不讓程序任意存取資源,大部分的CPU架構(gòu)都支持Kernel mode與User mode兩種執(zhí)行模式。當(dāng)CPU運行于Kernel mode時,任務(wù)可以執(zhí)行特權(quán)級指令,對任何I/O設(shè)備有全部的訪問權(quán),還能夠訪問任何虛擬地址和控制虛擬內(nèi)存硬件;這種模式對應(yīng)x86的ring0層,操作系統(tǒng)的核心部分,包括設(shè)備驅(qū)動程序都運行在該模式。用戶模式(User-Mode)當(dāng)CPU運行于User Mode時,硬件防止特權(quán)指令的執(zhí)行,并對內(nèi)存和I/O空間的訪問操作進(jìn)行檢查,如果運行的代

4、碼不能通過操作系統(tǒng)的某種門機制,就不能進(jìn)入內(nèi)核模式;這種模式對應(yīng)于x86的ring3層,操作系統(tǒng)的用戶接口部分以及所有的用戶應(yīng)用程序都運行在該級別。注:本次WinDbg使用講解僅涉及用戶模式的應(yīng)用程序調(diào)試第一節(jié):WinDbg的基本使用方法PDB文件鏈接器自動生成文件由兩個部分構(gòu)成,私有符號數(shù)據(jù)(private symbol data)和公共符號表(public symbol table)私有符號數(shù)據(jù)(Private Symbol Data)函數(shù)全局變量局部變量用戶定義的結(jié)構(gòu)體,類,數(shù)據(jù)類型源文件的名稱和源文件中每個二進(jìn)制指令的行號公共符號表(Public Symbol Table)靜態(tài)函數(shù)全局

5、變量(extern)第一節(jié):WinDbg的基本使用方法建立一個簡單的Windows應(yīng)用程序完成編譯,自動完成對pdb和exe文件的生成啟動WinDbg第一節(jié):WinDbg的基本使用方法設(shè)置程序的符號文件目錄快捷鍵,Ctrl+S設(shè)置程序的源代碼目錄快捷鍵,Ctrl+P設(shè)置程序的二進(jìn)制文件目錄快捷鍵,Ctrl+I第一節(jié):WinDbg的基本使用方法選擇可執(zhí)行啟動文件通過菜單選擇我們生成好的exe文件第一節(jié):WinDbg的基本使用方法命令瀏覽窗口打開exe程序后自動打開命令瀏覽窗口,瀏覽加載模塊,符號文件,寄存器等等數(shù)據(jù)第一節(jié):WinDbg的基本使用方法啟動調(diào)試,打開源代碼文件按下F5鍵或者點擊啟動調(diào)

6、試按鈕,進(jìn)入調(diào)試狀態(tài)利用菜單打開對應(yīng)的源代碼,自動打開源代碼窗口第一節(jié):WinDbg的基本使用方法設(shè)置斷點通過F9鍵我們可以在源代碼窗口中設(shè)置位置斷點,設(shè)置好的斷點紅色進(jìn)行了標(biāo)示通過F5鍵我們繼續(xù)運行,程序會自動中斷到斷點所在代碼行在瀏覽器窗口中我們可以看到當(dāng)前執(zhí)行代碼的寄存器數(shù)據(jù)第一節(jié):WinDbg的基本使用方法單步運行通過F10進(jìn)行逐過程運行通過F11進(jìn)行逐語句運行通過Shift+F11跳出當(dāng)前運行的函數(shù)通過Shift+F5終止調(diào)試常用的命令行g(shù) 運行!gle 當(dāng)前錯誤代碼第一節(jié):WinDbg的基本使用方法常用的命令行dt 顯示當(dāng)前結(jié)構(gòu)體成員k 顯示當(dāng)前堆棧lm 列出當(dāng)前加載模塊lsa 根

7、據(jù)地址列出代碼第二節(jié):生成dump與分析dumpDump文件的種類用戶模式dump文件核心模式dump文件用戶模式dump文件的種類完整用戶模式dump(Full User-Mode Dumps)Mini dump(Minidumps)兩種文件的區(qū)別僅僅是大小而已,minidump具有更多壓縮以便于傳輸?shù)诙?jié):生成dump與分析dump創(chuàng)建用戶模式dump文件有五種工具可以用來創(chuàng)建dump文件,CDB、WinDbg、Dr.Watson、UserDump、ADPlus。五種工具的區(qū)別第二節(jié):生成dump與分析dump默認(rèn)調(diào)試器的設(shè)置注冊表的位置HKEY_LOCAL_MACHINE/SOFTWAR

8、E/Microsoft/Windows NT/CurrentVersion/AeDebug/DebuggerWinDBG: WinDbg的安裝目錄windbg.exe -p %ld -e %ld g Visual Studio: C:WINDOWSsystem32vsjitdebugger.exe -p %ld -e %ld第二節(jié):生成dump與分析dump生成dump文件WinDbg生成dump文件命令行.dump Options Filename默認(rèn)生成精簡內(nèi)容的MiniDumps僅包含,模塊、線程、堆棧信息完整minidump文件,包含完整內(nèi)存信息,句柄數(shù)據(jù),未加載模塊信息,基本內(nèi)存信息

9、,線程時間信息 .dump ma FileName 第二節(jié):生成dump與分析dump利用分析工具進(jìn)行分析通過!anyalyze v 命令來得到詳細(xì)的dump分析數(shù)據(jù),包括:代碼斷點位置異常的類型與錯誤代碼函數(shù)堆棧調(diào)用第三節(jié):利用WinDbg進(jìn)行遠(yuǎn)程調(diào)試遠(yuǎn)程調(diào)試遠(yuǎn)程調(diào)試由兩臺計算機構(gòu)成,客戶端(Client)和服務(wù)器端(Server)客戶端安裝有需要調(diào)試的應(yīng)用程序和WinDbg服務(wù)器端安裝有WinDbg用于建立調(diào)試會話,遠(yuǎn)程控制客戶端的WinDbg兩臺計算機不需要同樣的windows系統(tǒng)版本,但需要同樣版本的WinDbg遠(yuǎn)程調(diào)試的步驟在服務(wù)器端啟動調(diào)試服務(wù)器客戶端調(diào)試工具配置客戶端建立調(diào)試會話

10、第三節(jié):利用WinDbg進(jìn)行遠(yuǎn)程調(diào)試在服務(wù)器端啟動調(diào)試服務(wù)器啟動WinDbg,選擇運行需要調(diào)試的應(yīng)用程序利用tcp協(xié)議建立調(diào)試服務(wù)器.server tcp:port=Socket客戶端調(diào)試器工具配置設(shè)置符號目錄設(shè)置代碼目錄第三節(jié):利用WinDbg進(jìn)行遠(yuǎn)程調(diào)試客戶端建立調(diào)試會話選擇菜單,連接遠(yuǎn)程會話(Connect to Remote Session)tcp:server=Server,port=Socket建立成功后即可打開對應(yīng)代碼文件設(shè)置斷點進(jìn)行調(diào)試第四節(jié):WinDbg高級調(diào)試技巧追蹤應(yīng)用程序中的句柄利用htrace工具獲取應(yīng)用程序中句柄的差異!htrace enable 啟動句柄追蹤!htace diff 得到應(yīng)用程序句柄分配差異,檢查是否存在句柄的泄露!htrace 句柄地址 可以得到分配此句柄的代碼堆棧通過lsa命令可以得到對應(yīng)分配的代碼位置第四節(jié):WinDbg高級調(diào)試技巧追蹤應(yīng)用程序中的潛在堆異常安裝Application VerifierApplication Verifier運行時非托管代碼檢查工具用于定位難于發(fā)現(xiàn)潛在的程序錯誤打開Heaps打開WinDbg,選擇調(diào)試的應(yīng)用程序啟動調(diào)試,當(dāng)遇到堆錯誤讀取或破壞的情況會

溫馨提示

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

評論

0/150

提交評論