windbg調式命令備忘錄

2021-06-03 18:10:01 字數 2595 閱讀 3509

1.斷點

條件斷點語法:

常用語法:

0:000> bp 

address

"j (

condition

) 'optionalcommands

'; 'gc' "

0:000> bp 

address

".if (

condition

)  .else "

兩者是等效的。

條件斷點示例:

bp mymodule!myfun  "$$對mymodule模組中myfun函式下斷點, 當函式執行到第0x0000023f次時,中斷下來。

r  $t0=@$t0+1;$$用偽暫存器$t0記錄函式執行的次數

.printf \"====func excutions %d times.\\n\", @$t0;

.echo;

.if (@$t0 & 0x0`ffffffff) = 0x0`0000023f

.else

"

設定斷點的命令有:bp,bu,bm。bm設定符號斷點,可以通過模式匹配一次性設定多個斷點。bu可以為乙個未載入的符號設定斷點,當後面符號載入時會自動解析。pb為指定位址設定位址,當位址表示式無法解析時會自動轉為bu斷點。

如,

0:000>bm myprogram!mem*

4: 0040d070 myprogram!memcpy

5: 0040c560 myprogram!memmove

6: 00408960 myprogram!memset

全部斷點語法:

使用者模式斷點語法:

[~thread]bp[

id] [

options] [

address [

passes]] ["commandstring"

[~thread]bu[

id] [

options] [

address [

passes]] ["commandstring"

[~thread]bm[

options] 

symbolpattern [

passes] ["commandstring"]

核心模式斷點語法:

bp[

id] [

options] [

address [

passes]] ["commandstring"

bu[

id] [

options] [

address [

passes]] ["commandstring"

bm[options] symbolpattern [passes] ["commandstring"]

2. 指令碼檔案的輸入

基本的語法有:

$$>$$< filename

$$>< filename    ------>例如:

0:000>$$><

c:\windbgscript.txt

$$>a< filename  [arg1 arg2 arg3 ...] [; command]     ----->可為指令碼提供引數, 指令碼中以$形式使用引數

只有乙個$的,filename前不能留空格;$$的,filename前面可有空格;含》的表示檔案中的命令被看成乙個命令塊,載入檔案後會被執行。

.echo 1=$

.echo 3=$

.echo 4=$

recx

執行結果:

0:002> $$>a     ----------->因為只提供了三個引數,所以自動引數變數$arg4沒有被解析

ecx=00000000

edx=77c7f17d 3.

待續。。。

windbg的命令備忘錄

現在經常要使用windbg除錯程式,只有把windbg的命令都用熟了,才能提高除錯的效率。windbg的命令實在是太多,因此,要記住需要一定時間,只有反覆學習和練習這些命令,才能把他們爛熟於心。主要是記錄一下自己經常要用到的windbg命令,並且不斷更新。反彙編位址為0x011f1400的後8行彙編...

Vim 命令 備忘錄

vim 中的內部命令與 vi 編輯器中的內部命令類似。表 1 提供了 vim 中的游標移動命令。表 1.用於移動游標的 vim 命令 命令動作 h將游標向左移動 j 加號 enter 或 return 將游標向下移動 k 減號 將游標向上移動 l將游標向右移動 將游標移動到當前段落的末尾 將游標移動...

github命令備忘錄

因為公司所有的 全部放在linux系統伺服器下,並且用git分布式管理,所以工作中難免會用到許多命令,很多較少用記錄下來以備用 git的用法 1 git brach 檢視分支情況 2 git checkout master 切換到master 3 git pull 更新 從git伺服器更新 4 gi...