刺激战场
六合彩
贵宾厅
  • 1180阅读
  • 1回复

44.windbg-??、?(c++表达式语法、当前表达式语法) [复制链接]

上一主题 下一主题
离线啊冲
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2016-02-13


目录(?)[+]





双问号(??)



命令根据C++表达式规则来计算和显示表达式的值
??命令根据当前线程和进程上下文来对表达式中的符号进行求值
所以用??后,就不用显式@@c++指定了
如果要使用MASM表达式规则来为Expression 表达式的一部分进行求值,可以将这部分用圆括号括起来并在前面添加两个at符号( @@ )。



问号(?) 命令


可用于计算和显示一个表达式的值
?命令的输入和输出依赖于使用MASM表达式语法还是C++表达式语法

具体来说就是.expr
[html] view plain copy
  1. 0:000> .expr  
  2. Current expression evaluator: MASM - Microsoft Assembler expressions  


如果使用MASM语法,输入和输出都依赖于当前的基数。要改变基数,使用n (Set Number Base)命令。一些字符串可能包含转义字符,如\n\"\r、 和\b,它们会被按字面的样子读取,而不会由求值器进行计算。如果字符串中的某个转义字符被求值器计算了,可能会出现求值错误


[html] view plain copy
  1. 0:000> as AliasName "c:\dir\name.txt"  
  2. 0:000> al  
  3.   Alias            Value    
  4. -------          -------  
  5. AliasName        "c:\dir\name.txt"  
  6. 0:000> ? $spat(${AliasName}, "*name*")  
  7. Evaluate expression: 0 = 00000000  
  8. 0:000> ? $spat(@${AliasName}, "*name*")  
  9. Evaluate expression: 1 = 00000001  

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

[html] view plain copy
  1. 0:000> ? $scmp("hgy", "hgy")  
  2. Evaluate expression: 0 = 00000000  
  3. 0:000> ? $scmp("hgy\", "hgy\")  
  4. Syntax error at '("hgy\", "hgy\")'  
  5. 0:000> ? $scmp(@"hgy\", @"hgy\")  
  6. Evaluate expression: 0 = 00000000  

善者 慈悲心常在 无怨无恨 以苦为乐
默认压缩密码www.hifyl.com
文件分享密码问题:http://www.hifyl.com/read-htm-tid-4444.html
离线v2680267313

只看该作者 沙发  发表于: 2016-04-30
用户被禁言,该主题自动屏蔽!
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个