zoukankan      html  css  js  c++  java
  • Windbg学习 (0x000d) 命令-内存控制

    d  

    d{a|b|c|d|D|f|p|q|u|w|W} [Options] [Range]

    dy{b|d} [Options] [Range]

    d [Options] [Range]

     

    Option 可以为 : /c <数字> /p <数字>    L<数字>

       /c :  定义显示的列数 

      /p 内核使用 显示物理内存信息

     

      L :显示长度  默认显示64个字节,但是可以通过 L<数字> 显式指定显示多少个字节

     

    基本类型命令 d、da、db、dc、dd、dD、df、dp、dq、du、dw、dW、dyb、dyd、ds、dS。

      基本类型

    • dw = 双字节WORD格式;
    • dd = 4字节DWORD格式 ;
    • dq = 8字节格式;
    • df = 4字节单精度浮点数格式;
    • dD =8字节双精度浮点数格式;
    • dp = 指针大小格式,32位系统下4字节,64位系统下为8字节;

      基本字符串

    • da = ASCII字符串格式;
    • du = UNICODE字符串格式;
    • db =字节 + ASCII字符串;
    • dW = 双字节WORD + ASCII字符串;
    • dc = 4字节DWORD + ASCII字符串;

      高级字符串:

    • ds = ANSI_STRING类型字符串格式;
    • dS = UNICODE_STRING类型字符串格式;

      二进制 + 基本类型

    • byb = 二进制 + 字节;
    • byd = 二进制 + DWORD值;

    数组类型命令 dda, ddp、 ddu、dds、dpa、dpp、dpu、dps、dqa、dqp、dqu、dqs

    链表类型命令 dl  

    查看数据结构 dt

    !address

    •  !address:不加任何参数,在用户模式下此命令将以内存块为单位,列出从地址0开始到0×80000000的全部地址空间信息;内核模式下,将列出从地址0×80000000开始到0xFFFFFFFF的全部地址空间信息

      内存类型:即Type值,共有四种:第一种是什么都不是,即尚未被使用的;第二种是MEM_IMAGE,即地址映射于一个可执行镜像文件片段,如DLL文件;第三种是MEM_ MAPPED,即地址映射于不可执行的镜像文件片段,如页文件;第四种是MEM_PRIVATE,即私有有内存,这里的私有是针对进程而言的,私有内存无法在多个进程间共享;

      保护模式:即Protect值,上例中见识了两种保护模式,NOACCESS和READWRITE。从字面即很容易理解其意思,前者是不能做任何访问的,因为空闲内存是无效内存;后者则可读可写,但不能执行,说明是保存数据的地方。所有可用的保护包括:PAGE_NOACCESS(不可访问),PAGE_READONLY(只读),PAGE_READWRITE(读写),PAGE_EXECUTE(可执行), PAGE_EXECUTE_READ(执行并可读),PAGE_EXECUTE_READWRITE(执行并可读写),PAGE_WRITECOPY(写时拷贝),PAGE_EXECUTE_WRITECOPY(执行,并写时拷贝), PAGE_GUARD(保护)。

      内存状态:即State值,共三种:MEM_FREE,即空闲内存;MEM_RESERVED,即保留内存,保留内存尚不能被实际使用,但其地址空间已被预留,尚需一个提交动作。最后是MEM_COMMIT,即内存已被提交,正在被使用。

      内存用途:即Usage值:

      • RegionUsageIsVAD:表示此地址区域已被分配;RegionUsageFree:代表此地址区域已被释放,既没有保留也没有被提交,将来可以申请使用;
      • RegionUsageImage:代表此地址区域被映射到二进制文件的镜像;Region UsageStack:代表此地址区域用于线程栈;RegionUsageTeb:代表此地址区域用于保存目标进程的所有线程的TEB结构;
      • RegionUsageHeap:代表此地址区域用于堆内存;RegionUsage Pdb:代表此地址区域用于保存目标进程的PEB结构;RegionUsageProcessParameters:代表此内存块用于保存目标进程的启动参数;
      • RegionUsageEnviromentBlock:代表此地址区域用于保存目标进程的环境块。
    • !address  -summary:用户环境下可使用下面的命令显示内存统计信息,包括内存用途、内存类型、内存状态

    s 搜索内存 

    s [-[[Flags]Type]] Range Pattern

    s -[[Flags]]v Range Object

    s -[[Flags]]sa Range

    s -[[Flags]]su Range

    e 修改内存 

    e{b|d|D|f|p|q|w} Address [Values]

    e{a|u|za|zu} Address "String"

    e Address [Values]

    !filecache

     查看文件缓存

    !heap

    查看当前进程堆 

  • 相关阅读:
    vs code 使用小技巧
    数组22组合
    js--arTemplate引擎
    JAVA -简要记录maven的安装与环境变量的配置
    JAVA -简要记录jdk的安装与环境变量的配置
    浅谈“复制粘贴”对于程序员的伤害
    C#中 IndexOf的使用
    C# Substring函数的总结
    C# 还原Nuget包失败的解决方法
    C# 未能找到类型或命名空间名称“XXXX”(是否缺少 using 指令或程序集引用?)解决方案
  • 原文地址:https://www.cnblogs.com/ywnwa417/p/5678330.html
Copyright © 2011-2022 走看看