使用WinDbg調試程式異常和死鎖等問題

来源:https://www.cnblogs.com/log9527blog/archive/2022/08/14/16580475.html
-Advertisement-
Play Games

一、在使用WinDbg調試之前,我們先使用VS的調試功能 1、文件 -> 打開 -> 文件 -> 打開Dump文件 2、調試 -> 選項 -> 調試 -> 符號 -> 添加該應用的.pdb所在的文件夾 3、使用 僅限托管 進行調試 正常情況下會執行到拋出異常的位置,並且顯示異常詳情。 二、WinDb ...


一、在使用WinDbg調試之前,我們先使用VS的調試功能

  1、文件 -> 打開 -> 文件 -> 打開Dump文件

  

   2、調試 -> 選項 -> 調試 -> 符號 -> 添加該應用的.pdb所在的文件夾

   3、使用 僅限托管 進行調試

 

   正常情況下會執行到拋出異常的位置,並且顯示異常詳情。

二、WinDbg

下載路徑:https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/debugger-download-tools

 舊版需要單獨配置符號路徑,某些版本符號路徑沒辦法全部下載下來,有一些遺漏導致功能用不了,推薦去上面的官網下載新版本

SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols

 

下麵的都是新版的操作,使用Open dump file打開dump文件

 

 

 

 自動下載符號文件,下載完畢使用 !analyze -v分析(第一次使用還會下載分析使用的符號文件,之後就不會再下載了),FAULTING_SOURCE_CODE指出了源碼錯誤的位置

異常信息解讀

下麵分別介紹比較重要的關鍵欄位:

1、各個參數的詳解

FAULTING_IP :

即出錯的指令地址,指出發生錯誤時所執行的指令,這的IP值EIP

EXCEPTION_RECORD:

異常記錄的地址,即該地址是PEXCEPTION_RECORD類型,並且這裡給出了分析異常的命令(.exr -1)

ExceptionAdddress:

發生異常的地址

ExceptionCode:

異常所代碼的錯誤碼,這是因為非法訪問導致的

ExceptionFlag:

異常標誌(1,表示不可繼續的異常 0,表示可繼續的異常)

NumberParameters:

異常相關聯的參數,第一個參數是空指針,第二參數是結構體成員地址

FAULTING_THREAD:

發生錯誤的線程ID

CONTEXT:

是發生異常時的上下文地址,這裡給出的地址是0x002afb08 ,這個很重要。

FAULTING_SOURCE_CODE:

給出了執行異常時所對應的源代碼,>符號表明瞭異常語句。

STACK_COMMAND:

是堆棧相關的命令,獲取程式執行錯誤時堆棧調用情況,這給出了.cxr 0x2afb08 和 kb兩個命令, 這個也很重要。

2、STACK_TEXT棧文本

該欄位是棧文本信息,它反映了錯誤堆棧的調用情況,從中可以知道以下兩個信息:

函數執行順序為從MainWindow_Loaded函數到Run函數,執行Test11111函數時發生異常。
每一行中的每列地址分別為 ChildEBP地址、函數返回地址、函數前三個參數,共計五個。
例如:

00d92104參數1 00000000參數2 00000005 參數3 若參數少於三個,按照實際順序對號入座即可。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. 認識RabbitMQ 1.1介紹RabbitMQ RabbitMQ 是開源的高級消息隊列協議(Advanced Message Queueing Protocol, AMQP) 的實現,用Erlang 語言編寫,支持多種客戶端。 RabbitMQ是目前應用相當廣泛的消息中間件(其他同類的消息處 ...
  • 你必須非常努力,才能看起來毫不費力! 微信搜索公眾號[ 漫漫Coding路 ],一起From Zero To Hero ! 前言 日常 Go 開發中,Context 包是用的最多的一個了,幾乎所有函數的第一個參數都是 ctx,那麼我們為什麼要傳遞 Context 呢,Context 又有哪些用法,底 ...
  • 最近在看C語言代碼時碰到了這個問題,結合查找的資料對這C的知識點做了一下小結。寫了一份測試它們的代碼。test1函數穿了一個char* const的指針,如果對它增加,會報錯,它是只讀的。但是可以對指針所指位置的內容進行更改。test2函數測試的是const char類型的參數,test3函數測試的 ...
  • java中只有值傳遞 為什麼這麼說?兩個例子: public class Student { int sage = 20; String sname = "雲胡不歸"; public static void change(Student s1) { s1.sname = "荀一"; s1.sage ...
  • 一.元素操作 send_keys:賦值 clear:清空 click:點擊 from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.ge ...
  • 前言 紅黑樹是一種特殊的B樹是B樹種2-3-4樹的一種特殊實現,紅黑樹保證了每個節點只會有兩個子節點,通過對每個節點進行染色,然後通過不同顏色的節點組合來分別代表2-3-4的2節點、3節點、4節點樹的情況。在學習紅黑樹之前,我們需要先去瞭解2-3-4樹。 一、 B樹 那麼如果想要對紅黑樹有一個較為深 ...
  • 書籍下載地址: Ansi Common Lisp 中文版|百度網盤 實用Common.Lisp編程 .pdf|百度網盤 LISP指令速查網站推薦: Simplified Common Lisp reference (jtra.cz) 我製作的表格: 由於Common LISP命令很多,經常忘,所以做 ...
  • #使用Nginx在 Linux 上托管 ASP.NET Core 6.0應用:GitHub Actions自動部署 前言 本文主要參考微軟這篇文檔而來 Host ASP.NET Core on Linux with Nginx,並使用Github Actions做CI&CD,部署到阿裡雲伺服器,所有 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...