zoukankan      html  css  js  c++  java
  • windbg学习¥{} Alias Interpreter 别名解释器

    Text ${Alias} Text 
    Text ${/d:Alias} Text 
    Text ${/f:Alias} Text 
    Text ${/n:Alias} Text 
    Text ${/v:Alias} Text 
    
    Alias
    指定要展开和求值的别名名称。Alias 必须是用户命名的别名或者.foreach关键字中使用的变量值

    /d

       根据别名当前是否已经定义计算出1或者0。如果别名已经定义,${/d:Alias} 被替换为 1;如果别名没有定义,${/d:Alias} 被替换为 0

    0:000> al
      Alias            Value  
     -------          ------- 
     $str             Tencent Technology(Shenzhen) Company Limited 
    0:000> r $t0=${/d:$str}
    0:000> r $t0
    $t0=00000001
    0:000> ad $str
    0:000> al
    No aliases
    0:000> r $t0=${/d:$str}
    0:000> r $t0
    $t0=00000000
    

    可以看到,$str存在时${/d:$str}为1,否则为0


    /f

    如果别名当前已定义则等同于计算别名。如果别名已经定义,${/f:Alias} 被替换为等价的别名;如果别名没有定义,${/f:Alias}被替换为空字符串

    0:000> al
      Alias            Value  
     -------          ------- 
     $add             + 
    0:000> ? 1 $add 2
    Evaluate expression: 3 = 00000003
    0:000> ? 1 ${/f:$add} 2
    Evaluate expression: 3 = 00000003
    0:000> ad $add
    0:000> al
    No aliases
    0:000> ? 1 ${/f:$add} 2
    Evaluate expression: 1 = 00000001
                ^ Extra character error in '? 1  2'


    /n

    如果别名当前已定义则计算别名的名称。如果别名已经定义,${/n:Alias}被替换为别名名称;如果别名没有定义,${/n:Alias}保留它字面上的值不替换

    0:000> eza 0019e8b4 "${/n:$add}"
    0:000> da 0019e8b4 
    0019e8b4  "$add"
    0:000> ad $add
    0:000> al
    No aliases
    0:000> eza 0019e8b4 "${/n:$add}"
    0:000> da 0019e8b4 
    0019e8b4  "${/n:$add}"
    
    可以看出,如果定义了别名,"${/n:$add}"被直接替换成$add,否则不变.

    /v

    禁止对任何别名求值。不论别名是否已经定义,${/v:Alias} 总是保持它字面上的值

    0:000> as $add +
    0:000> eza 0019e8b4 "${/v:$add}"
    0:000> da 0019e8b4 
    0019e8b4  "${/v:$add}"


    有一个例外。如果你使用 ${/v:Alias}作为as (Set Alias)或者aS (Set Alias)命令的第一个参数,该关键字被当成单独的 Alias 字符串,而不是 ${/v:Alias}字符串。这只是对 asaSad 命令起作用

    0:000> ad*
    0:000> al
    No aliases
    0:000> as ${/v:$add} +
    0:000> al
      Alias            Value  
     -------          ------- 
     $add             + 
    0:000> ad ${/v:$add} 
    0:000> al
    No aliases
    



    如果没有使用开关选项且别名当前已定义,${Alias} 被替换为等价的别名。如果没有使用开关选项且别名没有定义,${Alias}总是保持它字面上的值

    使用 ${ } 记号的一个优点是,如果和其它字符紧挨着也会对别名求值。没有这个记号,调试器只对那些和其它关键字隔开的别名求值

    0:000> eza 0019e8b4 "ab${/n:$add}"
    0:000> da 0019e8b4 
    0019e8b4  "ab$add"
    
    
  • 相关阅读:
    我的Android平台“人人相册”客户端
    ADT 17及更高版本的混淆变更
    由glBitmap想到OpenGL编程涉及的坐标系
    版本控制之SVN
    工作了,要努力
    50 Most Frequently Used UNIX / Linux Commands (With Examples)
    linux命令分析SED (二)
    SeekBar也玩分段
    TSQL RAND()
    使用WebClient进行上传文件 [ZT]
  • 原文地址:https://www.cnblogs.com/hgy413/p/3693414.html
Copyright © 2011-2022 走看看