zoukankan      html  css  js  c++  java
  • windbg学习.foreach

    .foreach

    .foreach 关键字分析一个或多个命令的输出并将该输出中每一个值作为另一个或多个命令的输入

    .foreach [Options( Variable  { InCommands } ) { OutCommands 

    .foreach 
    [Options/s ( Variable  "InString) { OutCommands 

    .foreach 
    [Options/f ( Variable  "InFile) { OutCommands } 

    Options
    可以是下面选项的任意组合:
    /pS InitialSkipNumber
    使得开头的一些符号被跳过。InitialSkipNumber 指定不传递给OutCommands 的输出关键字的数量。
    /ps SkipNumber
    每次执行命令时都会跳过一些符号。每次将符号传递给OutCommands 之后,SkipNumber 个数的符号都会被忽略

    我们首先搜索下带字符T的地址有哪些:

    0:000> s -[1]a  0029eeec  L1000 "T"
    0x0029eefb
    0x0029ef03
    0x0029ef0b
    0x0029ef15
    0x0029f034
    0x0029f06a
    0x0029f07a
    0x0029f08a
    0x0029f09e
    0x0029f356
    0x0029f7f0
    0x0029f989
    0x0029fa50

    然后我们用.foreach把它们da出来

    0:000> .foreach(place{s -[1]a  0029eeec  L1000 "T"}){da ${place}}
                           ^ Syntax error in '.foreach(place{s -[1]a  0029eeec  L1000 "T"}){da ${place}}'
    0:000> .foreach(place {s -[1]a  0029eeec  L1000 "T"}){da ${place}}
    0029eefb  "Tencent\TSVulFw\TSVulFW.DAT"
    0029ef03  "TSVulFw\TSVulFW.DAT"
    0029ef0b  "TSVulFW.DAT"
    0029ef15  "T"
    0029f034  "T"
    0029f06a  "T"
    0029f07a  "T"
    0029f08a  "T"
    0029f09e  "T"
    0029f356  "TxSignDemo"
    0029f7f0  "T.)"
    0029f989  "Ti.."
    0029fa50  "T.)"
    

    注意place和{之间必须有空格!

    现在从第三个开始,每隔一个显示一个:

    0:000> .foreach/pS3 /ps1(place {s -[1]a  0029eeec  L1000 "T"}){da ${place}}
    0029ef15  "T"
    0029f06a  "T"
    0029f08a  "T"
    0029f356  "TxSignDemo"
    0029f989  "Ti.."



    InFile
    /f 一起使用。指定要解析的文本文件;结果会传递给OutCommands 。文件名InFile 必须用引号括起来我们在C盘建立个2.txt,内容为:

    0x0029eefb
    0x0029ef03
    0x0029ef0b
    0x0029ef15
    0x0029f034
    0x0029f06a
    0x0029f07a
    0x0029f08a
    0x0029f09e
    0x0029f356
    0x0029f7f0
    0x0029f989
    0x0029fa50

    运行命令:

    0:000> .foreach/f (place "c:\2.txt"){da ${place}}
    0029eefb  "Tencent\TSVulFw\TSVulFW.DAT"
    0029ef03  "TSVulFw\TSVulFW.DAT"
    0029ef0b  "TSVulFW.DAT"
    0029ef15  "T"
    0029f034  "T"
    0029f06a  "T"
    0029f07a  "T"
    0029f08a  "T"
    0029f09e  "T"
    0029f356  "TxSignDemo"
    0029f7f0  "T.)"
    0029f989  "Ti.."
    0029fa50  "T.)"

    InCommands 的输出、InString 字符串或InFile 被解析时,任何数量的空格、tab符或回车都将会被当作单个分隔符。文本被分隔成的小片段被用来替换OutCommands 中的Variable


    /s 一起使用。指定一个要解析的字符串;结果会传递给OutCommands

    0:000> .foreach/s (place "0029ef03;0029ef0b"){da ${place} }
    0029ef03  "TSVulFw\TSVulFW.DAT"
                       ^ Syntax error in 'da 0029ef03;0029ef0b '
    0:000> .foreach/s (place "0029ef03 0029ef0b"){da ${place}}
    0029ef03  "TSVulFw\TSVulFW.DAT"
    0029ef0b  "TSVulFW.DAT"

    所以,只是把空格,tab当成分隔符,不是分号!此原则适用于string和file




















  • 相关阅读:
    170110-学习MoveIt!
    12.29-ros-gazebo高级
    12.27-ros-gazebo基础
    4.9-Simulation in gazebo or webots
    6.28-机器人模拟器Gazebo基础
    4.8-URDF in ROS
    Win32双缓冲画图原理
    Win32 计时器
    最简化的DirectX 11开发环境的配置 VS2010
    VS2010 C++编译报错LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
  • 原文地址:https://www.cnblogs.com/hgy413/p/3693409.html
Copyright © 2011-2022 走看看