WinDbg常用命令系列---!address
!address
这个!address扩展命令显示有关目标进程或目标计算机使用的内存的信息。
用户模式:
!address Address
!address -summary
!address [-f:F1,F2,...] {[-o:{csv | tsv | 1}] | [-c:"Command"]}
!address -? | -help
内核模式:
!address Address
!address
参数:
- Address
仅显示包含地址的地址空间区域。 - -summary
仅显示摘要信息。 - -f:F1, F2, ...
仅显示由筛选器f1、f2等指定的区域。
以下筛选器值通过目标进程使用内存区域的方式指定内存区域。
筛选器值 显示的内存区域 VAR
繁忙地区。这些区域包括所有虚拟分配块、sbh堆、来自自定义分配程序的内存以及地址空间中不属于其他分类的所有其他区域。
Free
自由内存。这包括所有尚未保留的内存。
Image
映射到作为可执行映像一部分的文件的内存。
Stack
用于线程堆栈的内存。
Teb
用于线程环境块 (Teb) 的内存。
Peb
使用进程环境块 (PEB) 内存。
Heap
使用的堆内存量。
PageHeap
用于在整页堆的内存区域。
CSR
CSR 共享内存。
Actx
用于激活上下文数据的内存。
NLS
用于区域语言支持 (NLS) 的表的内存。
FileMap
内存映射文件使用的内存。 此筛选器仅在实时调试过程才适用。
以下筛选值按内存类型指定内存区域。
筛选器值 显示的内存区域 MEM_IMAGE
映射到可执行映像的一部分的文件的内存。
MEM_MAPPED
映射到不是可执行映像的一部分的文件的内存。 这包括映射到分页文件的内存。
MEM_PRIVATE
专用内存。 此内存不共享任何其他进程和未映射到任何文件。
下列筛选值根据内存的状态指定内存区域。
筛选器值 显示的内存区域 MEM_COMMIT
提交的内存。
MEM_FREE
可用内存。 这包括所有未保留的内存。
MEM_RESERVE
保留的内存。
以下筛选值通过应用于内存的保护指定内存区域。
筛选器值 显示的内存区域 PAGE_NOACCESS
不能访问的内存。
PAGE_READONLY
是可读,但不可写且非可执行的内存。
PAGE_READWRITE
是可读和可写的但非可执行的内存。
PAGE_WRITECOPY
已写入时复制行为的内存。
PAGE_EXECUTE
是可执行文件,但不可读和不可写入的内存。
PAGE_EXECUTE_READ
是可执行文件和可读,但不可写的内存。
PAGE_EXECUTE_READWRITE
是可执行文件、 可读,并且必须可写内存。
PAGE_EXECUTE_WRITECOPY
它是可执行文件并具有写入时复制行为的内存。
PAGE_GUARD
充当一个保护页的内存。
PAGE_NOCACHE
未缓存的内存。
PAGE_WRITECOMBINE
已启用的写入-将访问的内存。
- -o:{csv | tsv | 1}
根据以下选项之一显示输出。
Option 输出格式 csv
以逗号分隔值的形式显示输出。
tsv
以制表符分隔值的形式显示输出。
1
裸机格式显示输出。 此格式的工作以及当!address用作输入 .foreach。
- -c:"Command"
为每个内存区域执行自定义命令。您可以在命令中使用以下占位符来表示输出字段!address地址扩展命令。
占位符 输出字段 %1
基址
%2
结束地址 + 1
%3
区域大小
%4
在任务栏的搜索框中键入
%5
状态
%6
保护
%7
用法
例如,
!address -f:Heap -c:".echo %1 %3 %5"
基址、 大小和类型的每个内存区域的状态将显示堆。在命令中的引号必须加反斜杠 (\")。 例如,! 地址-f: 堆-c:"s-a %1 %2 \"pad\""中搜索类型的每个内存区域堆"板"的字符串。
不支持多个命令之间用分号分隔。
- -?
在调试器命令窗口中显示此扩展的最小帮助文本。
DLL:
Windows 2000 |
Ext.dll |
Windows XP 及更高版本 |
Ext.dll |
没有任何参数!address显示有关整个地址空间的信息。这个!address -summary命令只显示摘要。在内核模式下,此扩展只搜索内核内存,即使使用.process(设置进程上下文)指定给定进程的虚拟地址空间。在用户模式下!address总是指目标进程拥有的内存。 在用户模式下,!address显示指定地址所属区域的特征。没有参数,!address显示所有内存区域的特征。这些特性包括内存使用、内存类型、内存状态和内存保护。有关此信息含义的更多信息,请参阅-f参数说明中的前面的表。
0:000> !address 75831234
Usage: Image
Base Address: 75831000
End Address: 758f6000
Region Size: 000c5000
Type: 01000000MEM_IMAGE
State: 00001000MEM_COMMIT
Protect: 00000020PAGE_EXECUTE_READ
More info: lmv m kernel32
More info: !lmi kernel32
More info: ln 0x75831234
此示例使用地址值0x75831234。显示屏显示此地址位于以地址0x75831000开头、以地址0x758F6000结尾的内存区域中。该区域有usage image、type mem_image、state mem_commit和protection page_execute_read。(有关这些值的详细信息,请参阅前面的表。)该显示还列出了三个其他调试器命令,您可以使用这些命令来获取有关此内存地址的更多信息。 如果您从一个地址开始并试图确定关于它的信息,那么使用信息通常是最有价值的。了解用法后,可以使用其他扩展来了解有关此内存的更多信息。例如,如果用途是heap,则可以使用!heap扩展命令以了解更多信息。
!address /f:Image /c:"s -u %1 %2 \"Note\"" *** Executing: s -u 0xab0000 0xab1000 "Note"
*** Executing: s -u 0xab1000 0xabc000 "Note"
00ab2936 004e 006f 0074 0065 0070 0061 0064 0000 N.o.t.e.p.a.d...
00ab2f86 004e 006f 0074 0065 0070 0061 0064 005c N.o.t.e.p.a.d.\.
00ab32e4 004e 006f 0074 0065 0070 0061 0064 0000 N.o.t.e.p.a.d...
*** Executing: s -u 0xabc000 0xabd000 "Note"
. . .
在内核模式下,输出!address与用户模式输出类似,但包含的信息较少。下面的示例显示内核模式输出。
kd> !address
804de000 - 00235000
Usage KernelSpaceUsageImage
ImageName ntoskrnl.exe 80c00000 - 001e1000
Usage KernelSpaceUsagePFNDatabase .... f85b0000 - 00004000
Usage KernelSpaceUsageKernelStack
KernelStack 817b4da0 : 324.368 f880d000 - 073d3000
Usage KernelSpaceUsageNonPagedPoolExpansion
WinDbg常用命令系列---!address的更多相关文章
- WinDbg常用命令系列---!cppexr
!cppexr 简介 !cppexr显示C++异常记录的内容. 使用形式 !cppexr Address 参数 Address指定要显示的C++异常记录的地址. 支持环境 Windows 2000 E ...
- WinDbg常用命令系列---显示段选择器dg、链接列表dl和字符串ds/dS
dg (Display Selector) dg命令显示指定选择器的段描述符. dg FirstSelector [LastSelector] 参数: FirstSelector指定要显示的第一个选择 ...
- WinDbg常用命令系列---源代码操作相关命令
lsf, lsf- (Load or Unload Source File) lsf和lsf-命令加载或卸载源文件. lsf Filename lsf- Filename 参数: Filename指定 ...
- WinDbg常用命令系列---单步执行p*
p (Step) p命令执行单个指令或源代码行,并可选地显示所有寄存器和标志的结果值.当子例程调用或中断发生时,它们被视为单个步骤. 用户模式: [~Thread] p[r] [= StartAddr ...
- WinDbg常用命令系列---断点操作b*
ba (Break on Access) ba命令设置处理器断点(通常称为数据断点,不太准确).此断点在访问指定内存时触发. 用户模式下 [~Thread] ba[ID] Access Size [O ...
- WinDbg常用命令系列---查看线程调用栈命令K*简介
Windbg里的K*命令显示给定线程的堆栈帧以及相关信息,对于我们调试时,进行调用栈回溯有很大的帮助. 一.K*命令使用方式 在不同平台上,K*命令的使用组合如下 User-Mode, x86 Pro ...
- WinDbg常用命令系列---!uniqstack
简介 这个!uniqstack扩展扩展显示的所有线程的堆栈的所有当前进程,不包括显示为具有重复项的堆栈中. 使用形式 !uniqstack [ -b | -v | -p ] [ -n ] 参数 -b将 ...
- WinDbg常用命令系列---.cmdtree
.cmdtree 简介 使用形式 .cmdtree cmdfile 参数 cmdfile命令文件,包含多个你需要的命令.必须是一个文本档 使用步骤 1.使用命令创建文本文件test.wl,使用以下示例 ...
- WinDbg常用命令系列---.write_cmd_hist (写命令历史记录)
.write_cmd_hist 简介 .write_cmd_hist命令将调试器命令窗口的整个历史记录写入文件. 使用形式 .write_cmd_hist Filename 参数 Filename指定 ...
随机推荐
- 【LEETCODE】71、验证二叉树的前序序列化
简单粗暴,代码有待优化,不过自己独立完成,没有参考任何材料,还是比较满意的 package y2019.Algorithm.stack.medium; import java.util.Stack; ...
- python_封装redis_hash方法
xshell 进入 虚拟环境 安装 redis workon py3env # 进入虚拟环境 pip install redis # 安装redis deactivate # 退出虚拟环境 简单的封装 ...
- 仅反射加载(ReflectionOnlyLoadFrom)的 .NET 程序集,如何反射获取它的 Attribute 元数据呢?
原文:仅反射加载(ReflectionOnlyLoadFrom)的 .NET 程序集,如何反射获取它的 Attribute 元数据呢? 平时我们获取一个程序集或者类型的 Attribute 是非常轻松 ...
- Spring-Cloud之Eureka注册与发现-2
一.Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的.SpringCloud将它集成在其 ...
- 高性能Golang研讨会【精】
by Dave Cheney 概观 本次研讨会的目标是为您提供诊断Go应用程序中的性能问题并进行修复所需的工具. 通过这一天,我们将从小工作 - 学习如何编写基准,然后分析一小段代码.然后走出去讨论执 ...
- 实战Go内存泄露【转】
最近解决了我们项目中的一个内存泄露问题,事实再次证明pprof是一个好工具,但掌握好工具的正确用法,才能发挥好工具的威力,不然就算你手里有屠龙刀,也成不了天下第一,本文就是带你用pprof定位内存泄露 ...
- springmvc 注解二
@SessionAttributes @sessionattributes注解应用到Controller上面,可以将Model中的属性同步到session作用域当中. SessionAttribute ...
- Django使用 django-allauth实现第三方登陆
Django使用 django-allauth实现第三方登陆 这里我们使用 django-allauth 模块来实现第三方账号验证登录,官方文档如下:https://django-allauth.re ...
- react-router4的使用备注
1.安装 react-router是核心库,在项目中不需要安装,web开发只需安装react-router-dom.native开发安装react-router-native. 2.url参数携带与获 ...
- 首次使用DoNetCore EFCore DbFirst
环境 Visual Studio 2017 开始搭建项目 1.在 Visual Studio 2017 中创建新项目 “文件”>“新建”>“项目” 从左侧菜单中选择“已安装”>“模板 ...