windbg調試命令5(ln、偽寄存器)

來源:互聯網
上載者:User
windbg調試命令5(ln、偽寄存器)

1.ln

ln 命令顯示給定地址處的或者最近的符號。

ln表示list near,ln命令將儘可能地給出與特定地址相關的符號,如果沒有符號能夠精確地與這個地址匹配,那麼調試器將通過指標演算法對靠近這地址的符號進行運逄,

並返回運算結果符號

0:000> ln 01012475
(01012475)   calc!WinMainCRTStartup   |  (0101263c)   calc!__CxxFrameHandler
Exact matches:
    calc!WinMainCRTStartup = <no type information>
0:000> ln 01012475+1
(01012475)   calc!WinMainCRTStartup+0x1   |  (0101263c)   calc!__CxxFrameHandler

我們發現,第一個顯示為Exact matches:表示精確匹配了一個地址,如果不是精確匹配,我們要小心,是否模組進行了最佳化,在最佳化後,一個函數,可能被拆分為多個部分

分別位於不同的地址,經過最佳化的映像可以通過lm查看:會有perf標識

當你在查看某部分資料,卻不知道這部分資料所表示的內容時,這個命名能帶來極大的協助

 

2.偽寄存器

對於那些偶爾使用調試器的使用者是很難記得所有平台的指令指標寄存器名字(或其他的名字),為了克服這個問題,調試器的Team Dev引入了各種偽寄存器,由調試器把這些偽寄存器對應到不同的硬體架構上,形式為$name,與標準的寄存器一樣,如果要在運算式中使用偽寄存器,那麼必須使用逸出字元@

$exentry
當前進程的入口地址

0:002> r $exentry
$exentry=01012475

 一般可以直接在這下斷點,

這個就對應PE檔案中的ImageBase+AddressOfEntryPoint(_IMAGE_OPTIONAL_HEADER)

 

$ip

指令指標寄存器

在X86架構上,$ip = eip

在x64架構上,$ip = rip

在Itanium架構上, $ip = iip

0:000> r @$ip$ip=7c92120e0:000> r eipeip=7c92120e

注意到下面顯示的分別是$ip,eip,雖然它們在X86下是同一個東東.

$ra

當前函數的返回地址

0:000> r $ra
$ra=7c95e612
0:000> kb
ChildEBP RetAddr  Args to Child             
0012fb1c 7c95e612 7ffdd000 7ffde000 00000000 ntdll!DbgBreakPoint
0012fc94 7c94108f 0012fd30 7c920000 0012fce0 ntdll!LdrpInitializeProcess+0xffa
0012fd1c 7c92e437 0012fd30 7c920000 00000000 ntdll!_LdrpInitialize+0x183
00000000 00000000 00000000 00000000 00000000 ntdll!KiUserApcDispatcher+0x7

其實也是對應當前線程,如果要看所有線程的當前函數的返回地址:  

0:000> ~* r $ra$ra=77d191be$ra=7c92df2c$ra=7c92df3c$ra=7c970010

 

$retreg

主要的值寄存器,在函數調用返回後,函數的結果將放在這個寄存器中,根據處理器架構的不同,$retreg的值分別為

在x86架構上,$retreg = eax

在x64架構上,$retreg = rax

在Itanium架構上,$retreg = ret0

0:000> r $retreg  
  1. $retreg=00251eb4  
  2. 0:000> r eax  
  3. eax=00251eb4  
0:000> r $retreg$retreg=00251eb40:000> r eaxeax=00251eb4

$csp

當前的棧指標,根據處理器架構的不同,$csp的值分別為

在x86架構上,$csp = esp

在x64架構上,$csp = rsp

在Itanium架構上,$csp = bsp

0:000> r $csp  
  1. $csp=0012fb24  
  2. 0:000> r esp  
  3. esp=0012fb24  
0:000> r $csp$csp=0012fb240:000> r espesp=0012fb24

 

$tpid

當前進程的標識(PID)

0:000> r $tpid  
  1. $tpid=000013f4  
0:000> r $tpid$tpid=000013f4

$tid

當前線程的標識(TID0

0:000> r $tid  
  1. $tid=000014a0  
0:000> r $tid$tid=000014a0

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.