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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

7、據地址列出代碼第二節:生成dump與分析dumpDump文件的種類用戶模式dump文件核心模式dump文件用戶模式dump文件的種類完整用戶模式dump(Full User-Mode Dumps)Mini dump(Minidumps)兩種文件的區別僅僅是大小而已,minidump具有更多壓縮以便于傳輸第二節:生成dump與分析dump創建用戶模式dump文件有五種工具可以用來創建dump文件,CDB、WinDbg、Dr.Watson、UserDump、ADPlus。五種工具的區別第二節:生成dump與分析dump默認調試器的設置注冊表的位置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第二節:生成dump與分析dump生成dump文件WinDbg生成dump文件命令行.dump Options Filename默認生成精簡內容的MiniDumps僅包含,模塊、線程、堆棧信息完整minidump文件,包含完整內存信息,句柄數據,未加載模塊信息,基本內存信息

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

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

溫馨提示

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

評論

0/150

提交評論