日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Windbg调试

發布時間:2024/4/14 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windbg调试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Windbg中文幫助手冊:http://www.dbgtech.net/windbghelp/

執行程序:

  g (F5): ? 運行程序

  p(F10):  ? 單步步過執行

  ?? t? (F11/F8):  單步步入執行

?

斷點處理:

  bl? 顯示斷點狀態
  bp 斷點下在固定地址
  bu 斷點下在符號上
  ba 斷點下在內存上(當內存被操作時觸發)
  be disable掉斷點
  bc Breakpoints 清除斷點

  其他的斷點操作包括:顯示斷點列表、禁止或恢復斷點、刪除斷點等。

  bd:禁止斷點,d代表Disable。如bd 1,禁止斷點1。斷點被禁止后將不起作用,但亦未刪除。

  be:恢復斷點,e代表Enable。恢復被禁止的斷點。如be 1恢復1號斷點。

  bc:清除斷點,如:bc 1,清除斷點1;bc *,清除全部斷點。

  br:序號管理,r代表ReNumber,即重新排序。如:br 2 0,將2號斷點重設為0號斷點。

?

內存處理:

!address? [地址]:查看指定地址處的內存屬性。

!address :查看所有內存區域的屬性。  

d* (Display Memory) 命令顯示指定內存或范圍的內容。

e* (Enter Values) 命令在指定內存地址寫入數據。

?

d[類型] ?[地址范圍]

  d代表Display,類型包括:字符、字符串、雙字等。具體來說,d*命令共有這幾種:d、 da、db、dc、dd、dD、df、dp、dq、du、dw、dW、dyb、dyd、ds、dS。解釋如下:  
  db 以byte查看地址
  dd 以4字節查看
  dq 以8字節查看
  da 以字符串查看

e 【地址】【數據】

  e{b|d|D|f|p|q|w}?Address?[Values]?
  e{a|u|za|zu}?Address?"String"?
  e?Address?[Values]

注釋

該命令存在以下這些形式。edeD 命令的第二個字符區分大小寫。見下表:

命令輸入
e輸入數據的格式和前一次e* 命令一樣。(如果上一次的e*命令是eaezaeuezu,則最后一個參數是String并且不能省略。)
eaASCII 字符串(不以NULL結尾)。
eb字節值。
ed雙字值(4字節)。
eD雙精度浮點數(8字節)。
ef單精度浮點數(4字節)。
ep指針大小的值。該命令根據目標機的處理器架構是32位還是64位,可能分別等于edeq
eq4字值(8字節)。
euUnicode字符串(非NULL結尾)。
ew字值(2字節)。
ezaNULL結尾的ASCII字符串。
ezuNULL結尾的Unicode字符串。

?

其他的內存處理命令:

  • m?(Move Memory) 命令將一個內存區域的內容移動到另一個。
  • f (Fill Memory) 命令用一個模板寫入內存區域,并重復直到區域被填滿。
  • c?(Compare Memory) 命令比較兩個內存區域的內容。
  • s?(Search Memory) 在內存區域搜索指定的模板或搜索內存區域中的ASCII或Unicode字符。
  • .holdmem?(Hold and Compare Memory) 命令將一個內存區域和另外一個比較

寄存器查看

  r? :顯示所有寄存器的值

  r 【寄存器】 :顯示某一個寄存器的值

  默認每執行一步代碼就會顯示寄存器的值,在指令后面加r時候是指不顯示寄存器的值:

    pr????????????執行一行源碼,并將寄存器切換為不顯示

查看調用堆棧:

  使用下面一些方法顯示調用堆棧:

  k?(Display Stack Backtrace) 命令是基本的堆棧追蹤命令。該命令顯示棧幀的基指針、返回地址和函數名。如果有源碼行號信息,k命令還會顯示源碼模塊和行號。

  kb?(Display Stack Backtrace) 命令和k命令一樣顯示堆棧,并且顯示傳遞給函數的前三個參數。

  kp?(Display Stack Backtrace) 命令和kb命令一樣顯示堆棧,并且顯示傳遞給函數的完整參數列表。

  kv?(Display Stack Backtrace) 命令和kb一樣顯示堆棧,并且再顯示幀指針省略信息(FPO)。在基于x86的處理器上,該命令還顯示調用約定的信息。在基于Itanium的處理器上,該命令顯示非易失性寄存器。

  kd?(Display Stack Backtrace) 命令顯示原始堆棧信息,不按照任何格式。

?

匯編模式的調試:

  反匯編指令:

  • u?(Unassemble) 命令反匯編并顯示一段機器碼。
  • uf?(Unassemble Function) 命令反匯編并顯示一個函數。
  • up?(Unassemble from Physical Memory) 命令反匯編并顯示保存在物理內存中的一段機器碼。
  • ur?(Unassemble Real Mode BIOS) 命令反匯編并顯示指定的16位實模式代碼。
  • ux?(Unassemble x86 BIOS) 命令反匯編并顯示指定地址處的x86 BIOS代碼指令。
  • (僅WinDbg) 反匯編窗口反匯編并顯示指定節的機器碼。如果在Window 菜單中選擇了Automatically Open Disassembly,該窗口會自動激活。也可以通過點擊View 菜單的Disassembly 、按下ALT+7或點擊工具欄上的Disassembly window 按鈕()。

個人常用: 

查看堆命令:

  !heap

  !heap -a

  !heap也有一些很好用的命令

  !heap?-stat?顯示進程中所有堆的信息,通過這個命令可以找到堆噴分配內存塊所屬的堆

  !heap?-a?HEAP_HANDLE?顯示指定句柄的堆的情況

  !heap?-stat?-h?HEAP_HANDLE?可以看到堆中塊的分布情況

  !heap?-flt?s?size?顯示所有指定大小的塊

  !heap?-p?-a?堆分配記錄

?

r 查看地址和寄存器
k 查看棧空間
u 查看指令
lmi 查看加載的模塊
ln 查看當前地址所在符號
s -a 搜索字符串
s -d 搜dword
s -

g -> go 繼續執行

?

F10 (p) 逐過程單步

F8?? 繼續單步跟入

F5?? (g)繼續執行

F9

!address 擴展命令可以顯示指定的內存地址的信息

dv? 命令可以查看當前作用域下局部變量的類型和值

.reload命令重新加載模塊的符號信息

kv 可以查看函數異常的函數調用棧?

kn 命令查看棧貞的編號?

uf 命令反匯編

dv 命令顯示當前作用域的所有局部變量的名字和值。

.hh 用來在Windbg中打開幫助文檔,比如使用.hh k則幫助文檔會打開到索引k命令處。

poi 操作符是WinDBG中可以被用來對指針進行解引用。類似C語言中對指針的操作符*

?

.attach 0n4220 // 4220為十進制pid,使用該命令附加調試時,必須先存在一個調試會話

.detach // 分離調試

.restart // 重啟并調試

.kill // 強制結束當前調試

q // 退出windbg

?

  掌握有這些基本的調試指令,基本上可以調試一般的程序了,如果需要使用更多的功能需要查看windbg的幫助文檔來提升調試。后面我也會在調試和使用的過程中加以總結和完善。

1、poi指令:Poi操作符在WinDBG中可以被用來對指針進行解引用. 類似C語言中對指針的操作符*.?

例如:0×00123456?? 中存放的是:0×00420000

   0×00420000? 中存放的是:1234

   dd poi(0×00123456) 顯示的就是1234

2、 查看多個地址數據:dd 起始地址 目標地址:

  dd 7ffd5000??? 7ffd5000 +128

?3、ba?Access?Size?[地址]  Access 是訪問的方式, 比如?e?(執行),?r?(讀/寫),?w?(寫)

 ?? Size?是監控訪問的位置的大小,以字節為單位。 值為 1、2或4,還可以是 8(64位機)。

  比如要對內存0x0483DFE進行寫操作的時候下斷點,可以用命令?ba w4 0x0483DFE。

?

轉載于:https://www.cnblogs.com/Yable/p/8633511.html

總結

以上是生活随笔為你收集整理的Windbg调试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。