1,关于如何打印变量,我在windbg脚本中使用了以下句子,但是无法打印它。
r @$t0 = 123;
.printf @$t0
2,如何在句子中使用变量,但是我仍然发现它失败了。
r @$t0 = 123;
.if(@$t0 ==123)
{
.printf @$t0
}
如何修改它们?
答案 0 :(得分:1)
我认为你使用伪寄存器的方式并不错,但是:
1).printf()采用格式字符串,就像在C
中一样2)默认情况下,数字是十六进制而不是十进制,使用0n或0x来明确提及它们的基数
3)从历史上看,你不应该使用' @'使用' r'来设置伪寄存器,虽然我相信现在它可以以任何方式工作
r $t0 = 0n123;
.if ( @$t0 == 0n123 )
{
.printf "%d", @$t0
}
答案 1 :(得分:1)
$ windbg脚本中三角形数字的总和
r eax=0;r $t0=0;.while(@$t0<10){r eax=@eax+@$t0;.printf "%2d=%3d\n",@$t0,@eax;r $t0=@$t0+1}
结果
0= 0
1= 1
2= 3
3= 6
4= 10
5= 15
6= 21
7= 28
8= 36
9= 45
10= 55
11= 66
12= 78
13= 91
14=105
15=120
让我们确认f(n) = n * (n+1) /2
? 0n15 * (0n16/2)
Evaluate expression: 120 = 00000078