Windbg伪估计扩展

时间:2010-04-22 09:51:57

标签: windbg

我正在尝试使用Windbg在Windows XP中自动化设备驱动程序的调试会话。我的设备有一个“索引”寄存器和一个“数据”寄存器,两个存储器映射。索引寄存器必须填充内部寄存器的索引,并且可以从数据寄存器中读取该值。 因此,followind Windbg命令正确打印了内部寄存器0x4C的值:

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

现在我想转储一系列内部寄存器,但似乎别名扩展在!ed命令中没有按预期工作。我正在尝试这个循环:

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

但似乎忽略了!ed命令,就好像@ $ t0在空字符串中展开一样。 试过“$ t0”,“@ $ t0”,“$ {t0}”和“@ $ {t0}”,但没有成功。我做错了什么?

1 个答案:

答案 0 :(得分:3)

是的,似乎!ed不会像其他命令一样评估其参数。您需要事先评估它们,例如使用别名,例如:

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