代码之家  ›  专栏  ›  技术社区  ›  mark

.echo 5+5在WinDBG中显示“5+5”。可以显示10吗?

  •  1
  • mark  · 技术社区  · 7 年前

    0:033> .echo 5+5
    5+5
    0:033> ? 5+5
    Evaluate expression: 10 = 00000000`0000000a
    0:033> r @$t0=5+5
    0:033> r @$t0
    $t0=000000000000000a
    0:033> .echo @$t0
    @$t0
    

    ? 这几乎是我需要的,但它太冗长了。有没有办法调用 .echo 在表达式上,使其显示表达式的结果而不是表达式文本?

    2 回复  |  直到 7 年前
        1
  •  2
  •   blabb    7 年前

    脚本文件中需要分号或空行 设置别名不能是脚本文件中的第一个命令

    using alias

    当一行以as命令开头时,该行中的别名和令牌 命令,则展开已具有值的任何别名或令牌。

    ;aS /x temp  ${$arg1} ${$arg2} ${$arg3}
    .block
    {
        .echo ${temp}
    }
    ad *
    

    0:000> $$>a< eval.txt 5 + 5
    0xa
    0:000> $$>a< eval.txt f + f
    0x1e
    0:000> $$>a< eval.txt f + 8
    0x17
    0:000> $$>a< eval.txt 0n16 + 0n16
    0x20
    0:000> $$>a< eval.txt 0x10 + 0x10
    0x20
    0:000> $$>a< eval.txt 0x10 * 0x10
    0x100
    0:000> $$>a< eval.txt 0n10 * 0n10
    0x64
    0:000> $$>a< eval.txt 5 << 3
    0x28
    0:000> $$>a< eval.txt 5 >> 3
    0x0
    0:000> $$>a< eval.txt f >> 3
    0x1
    0:000> $$>a< eval.txt 0y101 + 0y111
    0xc
    0:000> $$>a< eval.txt 0y101 % 0y111
    0x5
    0:000> $$>a< eval.txt 0y111 % 2
    0x1
    0:000> $$>a< eval.txt 0y111 % 4
    0x3
    0:000> $$>a< eval.txt 0y111 % 0n10
    0x7
    0:000> $$>a< eval.txt 0y111 / 0n10
    0x0
    0:000> $$>a< eval.txt 0n2 / 0n10
    0x0
    0:000> $$>a< eval.txt @@c++(@$teb->ProcessEnvironmentBlock) + 18
    0x7ffd6018
    0:000> $$>a< eval.txt 5 & 1
    0x1
    0:000> $$>a< eval.txt 5 & 2
    0x0
    0:000> $$>a< eval.txt 5 & 3
    0x1
    0:000> $$>a< eval.txt 5 & 4
    0x4
    0:000> $$>a< eval.txt 5 & 5
    0x5
    0:000> $$>a< eval.txt @esp & @esp
    0x12f9a4
    0:000> $$>a< eval.txt 3 | 4
    0x7
    0:000> $$>a< eval.txt poi(@esp+c) + 0
    0x7ffd6000
    0:000> $$>a< eval.txt poi(@esp+c) + @ecx
    0x80105988
    0:000> $$>a< eval.txt @ecx + 0
    0x12f988
    0:000> $$>a< eval.txt calc + 3c
    0x1d003c
    0:000> $$>a< eval.txt poi(calc+3c) + calc 
    0x1d00d8
    
        2
  •  1
  •   Thomas Weller    7 年前

    .printf 可以立即完成工作:

    0:000> .printf "%d", 5+5
    10
    

    当然,你也可以四处闯荡 .echo

    0:000> .foreach /pS 2 /ps 2 (word {? 5+5}) { .echo ${word}}
    10
    0:000> .foreach /pS 4 (word {? 5+5}) { .echo ${word}}
    0000000a
    

    ?? )输出是相关的,但具有类型信息

    0:000> ?? 5+5
    int 0n10