2010-04-22 68 views
4

我想在Windows XP中用Windbg自動化設備驅動程序的調試會話。我的設備有一個「索引」寄存器和一個「數據」寄存器,兩個存儲器映射。索引寄存器必須填充內部寄存器的索引,並且可以從數據寄存器讀取值。 因此,followind WinDBG的命令打印註冊個內的0x4C正確的值:Windbg pseudoregister擴展

!ed [uc] 0xfa000000 0x4c; !dd [uc] 0xfa000004 L1 

現在我想甩了一系列的內部寄存器,但似乎預期的別名擴展不起作用!ed命令。我想這個週期:

.for (r $t0=0; @$t0<0x100; r [email protected]$t0+1) { !ed [uc] 0xfa000000 @$t0; !dd [uc] 0xfa000004 L1 } 

但似乎ed命令被忽略,彷彿@ $ T0是在一個空字符串擴大! 嘗試過「$ t0」,「@ $ t0」,「$ {t0}」和「@ $ {t0}」,但沒有成功。我究竟做錯了什麼?

回答

3

是的,它似乎!ed不像其他命令一樣評估它的參數。您需要預先評估它們,例如使用別名,例如:

.for (r $t0=0; @$t0<0x100; r [email protected]$t0+1) { as /x val @$t0 ; .block {!ed [uc] 0xfa000000 ${val} ; !dd [uc] 0xfa000004 L1 } } 
+0

它的工作原理!謝謝! – 2010-05-01 09:06:30