Windbg斷點除錯

2022-09-08 07:15:09 字數 2194 閱讀 5101

[文章主題]

windbg是windows驅動除錯的重要軟體,也是必須學習的軟體,前面的部落格介紹了一些雙機除錯的環境配置,只要按照我所說的步驟一步步下來就可以完成環境搭建。

本文主要介紹如何除錯sys格式的驅動檔案,網上很多資料都說得含糊不清,甚至有博主就是簡單翻譯外文資料,根本沒有實際應用,這篇文章將解決這些問題。

[環境配置]

vm虛擬機器(已安裝xp系統)

drivermonitor(安裝在xp系統中)

win7系統(已安裝vm、已安裝windbg)

[測試:在執行之前首先測試下vm與windbg是否通訊正常,否則是無法完成除錯的]

[除錯開始]

1、首先在vs中完成**的書寫,並且編譯出sys,生成pdb符號檔案。這都是必須的檔案,缺一不可。

測試**如下,可以直接拷貝到vs中編譯,當然,編譯需要wdk環境配置,之前的文章我已經介紹了。

/*

模組功能:測試**

*/#include "ntddk.h"

void ddk_unload(in pdriver_object pdriverobject);

ntstatus createmydevice(pdriver_object pdriverobject);

// 驅動入口函式

extern "c" ntstatus driverentry(in pdriver_object pdriverobject, in punicode_string pregistrypath)

// 解除安裝驅動

void ddk_unload(in pdriver_object pdriverobject)

// 建立裝置

ntstatus createmydevice(pdriver_object pdriverobject)

else if(status == status_object_name_exists)

else if(status == status_object_name_collision)

return status;

} else

// 置於緩衝區執行

pdevobj->flags |= do_buffered_io;

// 建立符號連線

rtlinitunicodestring(&symlinkname, l"\\??\\symlinkddk");

status = iocreatesymboliclink(&symlinkname, &devname);

if(!nt_success(status))

return status_success;

}

注意:為了生成可用的pdb符號檔案,還需要對ddk做一些處理才可以生成出pdb檔案。

最後生成的檔案有sys、pdb

2、將原始檔和pdb檔案複製到乙個新建的資料夾中

3、開啟windbg,將pdb、cpp引用進去,以讓windbg有正確的符號連線並且有正確的原始碼響應。

4、使用windbg開啟原始檔,f9設定斷點。

5、執行windbg,在vm中載入驅動,使用drivermonitor進行載入。

首先在windbg執行「g」,讓debugging執行起來,然後再進入虛擬機器進行載入解除安裝操作,如果有斷點,windbg會自動命中斷點並且顯示出來!

[至此]

windbg除錯基本步驟就完成了,當然,最好是根據前面的ddk模板設定來對模板進行修改,達到不用每次都修改生成正確的pdb檔案,希望這篇文章對你有幫助,當然如果有其他問題可以直接聯絡作者進行討論!

windbg 除錯驅動設定斷點

在對windows的驅動做雙機除錯時,總會需要在自己編寫的驅動 上設定斷點。1 這需要首先,在windbg上設定工作空間 workspace 在這步裡面,需要將自己生成的符號檔案,能夠讓windbg搜尋到,即將自己符號檔案的路徑加入到windbg的symbol path裡 需要將自己編寫的原始檔,能...

Windbg斷點命令

windbg斷點命令 1 bu bp bm設定軟體斷點 a bp設定位址關聯的斷點 b bu設定符號關聯的斷點 c bm支援設定含萬用字元的斷點,可以一次建立乙個或多個bu或bp bm d 斷點 bp和bu的主要區別 a bp所設斷點和位址關聯,如果模組把該位址的指令移到其它地方,斷點不會隨之移動,...

windbg條件斷點

條件斷點 condition breakpoint 的是指在上面3種基本斷點停下來後,執行一些自定義的判斷。在基本斷點命令後加上自定義除錯命令,可以讓偵錯程式在斷點觸發停下來後,執行偵錯程式命令。每個命令之間用分號分割。語法格式如 0 000 bpaddress j condition option...