windbg学习---?? 和 ?

双问号(??)命令根据C++表达式规则来计算和显示表达式的值

??命令根据当前线程和进程上下文来对表达式中的符号进行求值

所以用??后,就不用显式@@c++指定了

如果要使用MASM表达式规则来为Expression 表达式的一部分进行求值,可以将这部分用圆括号括起来并在前面添加两个at符号( @@ )。


(?) 命令可用于计算和显示一个表达式的值

?命令的输入和输出依赖于使用MASM表达式语法还是C++表达式语法

具体来说就是.expr

0:000> .expr 
Current expression evaluator: MASM - Microsoft Assembler expressions

如果使用MASM语法,输入和输出都依赖于当前的基数。要改变基数,使用n (Set Number Base)命令。

一些字符串可能包含转义字符,如 \n\"\r、 和 \b,它们会被按字面的样子读取,而不会由求值器进行计算。如果字符串中的某个转义字符被求值器计算了,可能会出现求值错误

0:000> as AliasName "c:\dir\name.txt"
0:000> al
  Alias            Value  
 -------          ------- 
 AliasName        "c:\dir\name.txt" 
0:000> ? $spat(${AliasName}, "*name*")
Evaluate expression: 0 = 00000000
0:000> ? $spat(@${AliasName}, "*name*")
Evaluate expression: 1 = 00000001

可以看到解决方式是:使用 @" String " 语法

再看个例子:

0:000> ? $scmp("hgy", "hgy")
Evaluate expression: 0 = 00000000
0:000> ? $scmp("hgy\", "hgy\")
Syntax error at '("hgy\", "hgy\")'
0:000> ? $scmp(@"hgy\", @"hgy\")
Evaluate expression: 0 = 00000000



转载于:https://www.cnblogs.com/hgy413/archive/2013/05/29/3693418.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值