~ (Thread Status) 波浪符(~)命令显示指定线程或当前进程中所有线程的状态. ~ Thread 参数: Thread指定要显示的线程.如果省略此参数,将显示所有线程. 环境: 模式 仅限用户模式 目标 实时. 崩溃转储 平台 全部 可以在许多命令之前添加线程符号.下面的示例向您展示如何使用此命令.以下命令显示所有线程状态. 0:067> ~ 0 Id: 2854.2fe8 Suspend: 1 Teb: 00dfc000 Unfrozen 1 Id: 2854.24c8 Susp…
.exr (Display Exception Record) .exr命令显示异常记录的内容. .exr Address .exr -1 参数: Address指定异常记录的地址.如果指定-1作为地址,调试器将显示最新的异常. 环境: 模式 用户模式下,内核模式 目标 实时. 崩溃转储 平台 全部 .exr命令显示与调试器在目标计算机上遇到的异常相关的信息.显示的信息包括异常地址.异常代码.异常标志和异常参数的变量列表. 通常可以通过使用!pcr扩展命令获取地址. 下面的例子是在dmp文件里的…
.frame (Set Local Context) .frame命令指定使用哪个本地上下文(作用域)解释本地变量或显示当前本地上下文. .frame [/c] [/r] [FrameNumber] .frame [/c] [/r] = BasePtr [FrameIncrement] .frame [/c] [/r] = BasePtr StackPtr InstructionPtr 参数: /c将指定的帧设置为当前本地重写上下文.此操作允许用户访问调用堆栈中任何函数的非易失性寄存器. /r显…
ld (Load Symbols) ld命令加载指定模块的符号并更新所有模块信息. ld ModuleName [/f FileName] 参数: ModuleName指定要加载其符号的模块的名称.modulename可以包含各种通配符和说明符. /f FileName更改为匹配项选择的名称.默认情况下,模块名是匹配的,但使用/f时,文件名是匹配的,而不是模块名.文件名可以包含各种通配符和说明符. 调试器的默认行为是使用延迟符号加载(也称为延迟符号加载).这意味着符号在需要之前不会实际加载. 另…
简介 !findstack扩展查找所有包含指定的符号或模块的堆栈.此命令搜索线程调用堆栈中的特定符号,并显示匹配的线程. 使用形式 !findstack Symbol[DisplayLevel] !findstack -? 参数 Symbol 指定符号或模块. DisplayLevel 指定显示内容.这可以是以下任何一个值.默认值为1 0 显示仅包含每个线程的线程 ID符号. 1 显示线程 ID 和包含每个线程的帧符号. 2 将显示包含每个线程的整个线程堆栈符号. -? 在调试器命令窗口中显示此…
lsf, lsf- (Load or Unload Source File) lsf和lsf-命令加载或卸载源文件. lsf Filename lsf- Filename 参数: Filename指定要加载或卸载的文件.如果此文件不在从中打开调试器的目录中,则必须包含绝对路径或相对路径.文件名必须遵循Microsoft Windows文件名惯例. lsf命令加载源文件.lsf-命令卸载源文件.可以使用此命令卸载以前使用lsf加载的文件或自动加载的源文件.不能使用lsf-卸载通过windbg的fi…
.logopen (Open Log File) .logopen命令将事件和命令的副本从调试器命令窗口发送到新的日志文件. .logopen [Options] [FileName] .logopen /d 参数: Options下列任一选项: /t---将带有当前日期和时间的进程id附加到日志文件名中.此数据插入到文件名之后和文件扩展名之前. /u---以Unicode格式写入日志文件.如果省略此选项,调试器将以ascii(ansi)格式写入日志文件. FileName指定日志文件名.你可以…
ba (Break on Access) ba命令设置处理器断点(通常称为数据断点,不太准确).此断点在访问指定内存时触发. 用户模式下 [~Thread] ba[ID] Access Size [Options] [Address [Passes]] ["CommandString"] 内核模式下 ba[ID] Access Size [Options] [Address [Passes]] ["CommandString"] 参数: Thread指定断点应用于的…
Windbg里的K*命令显示给定线程的堆栈帧以及相关信息,对于我们调试时,进行调用栈回溯有很大的帮助. 一.K*命令使用方式 在不同平台上,K*命令的使用组合如下 User-Mode, x86 Processor [~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount] [~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = BasePtr [FrameCount] [~Thread] k[b|p|P|v] [c]…
p (Step) p命令执行单个指令或源代码行,并可选地显示所有寄存器和标志的结果值.当子例程调用或中断发生时,它们被视为单个步骤. 用户模式: [~Thread] p[r] [= StartAddress] [Count] ["Command"] 内核模式: p[r] [= StartAddress] [Count] ["Command"] 参数: Thread指定要继续执行的线程.所有其他线程都被冻结.只能在用户模式下指定线程. r 打开和关闭寄存器和标志的显示…
简介 这个!uniqstack扩展扩展显示的所有线程的堆栈的所有当前进程,不包括显示为具有重复项的堆栈中. 使用形式 !uniqstack [ -b | -v | -p ] [ -n ] 参数 -b将导致显示以包括前三个参数传递给每个函数. -v将导致显示以包括帧指针省略 (FPO) 信息. 在基于 x86 的处理器中,还会显示的调用约定信息. -p将导致显示堆栈跟踪中包含每个函数的完整参数. 此列表将包括每个参数的数据类型. 名称和值. 这要求的完整符号信息. -n导致要显示的帧号码. 环境支…
!exchain 这个!exchain扩展命令显示当前异常处理程序链. !exchain [Options] 参数: Options下列值之一: /c  如果检测到异常,则显示与调试C++ try/catch异常相关的信息. /C  显示与调试C++try/catch异常相关的信息,即使在没有检测到异常的情况下也是如此. /f 显示通过遍历CRT函数表获得的信息,即使未检测到CRT异常处理程序. DLL Windows 2000 Ext.dll Windows XP and later Ext.…
!analyze命令简介 这个!analyze扩展显示有关当前异常或错误检查的信息. 用户模式: !analyze [-v] [-f | -hang] [-D BucketID] !analyze -c [-load KnownIssuesFile | -unload | -help ] 内核模式: !analyze [-v] [-f | -hang] [-D BucketID] !analyze -c [-load KnownIssuesFile | -unload | -help ] !an…
dg (Display Selector) dg命令显示指定选择器的段描述符. dg FirstSelector [LastSelector] 参数: FirstSelector指定要显示的第一个选择器的十六进制选择器值. LastSelector指定要显示的最后一个选择器的十六进制选择器值.如果省略,则只显示一个选择器. 此命令最多只能显示256个选择器.常用选择器值为: ID 十进制 十六进制 KGDT_NULL 0 0x00 KGDT_R0_CODE 8 0x08 KGDT_R0_DATA…
简介 sx*命令控制调试器在正在调试的应用程序中发生异常或发生某些事件时采取的操作. 使用形式 sx sx{e|d|i|n} [-c "Cmd1"] [-c2 "Cmd2"] [-h] {Exception|Event|*} sx- [-c "Cmd1"] [-c2 "Cmd2"] {Exception|Event|*} sxr 参数 -c " Cmd1 " 指定在发生异常或事件时执行的命令. 当处理此异常…
.cmdtree 简介 使用形式 .cmdtree cmdfile 参数 cmdfile命令文件,包含多个你需要的命令.必须是一个文本档 使用步骤 1.使用命令创建文本文件test.wl,使用以下示例作为模板.您可以按所需方式修改{}之间的节: windbg ANSI Command Tree 1.0 title {"Common Commands"} body {"Common Commands"} {"Information"} {"…
.write_cmd_hist 简介 .write_cmd_hist命令将调试器命令窗口的整个历史记录写入文件. 使用形式 .write_cmd_hist Filename 参数 Filename指定要创建的文件的路径和文件名. 支持环境 此命令仅在 WinDbg 中可用,并能在脚本文件. 模式 用户模式下,内核模式 目标 实时. 崩溃转储 平台 全部…
!teb 简介 !teb扩展显示线程环境块(teb)中信息的格式化视图. 使用形式 !teb [TEB-Address] 参数 TEB-Address 要检查其TEB的线程的十六进制地址.(这不是从线程的内核线程块派生的TEB地址.)如果在用户模式中省略了TEB地址,则使用当前线程的TEB.如果在内核模式下省略,则显示与当前寄存器上下文相对应的TEB. 备注 TEB是Microsoft Windows线程控制结构的用户模式部分.如果!teb扩展没有参数时,在内核模式下会给您一个错误,您应该使用!…
!handle 简介 !handle扩展显示有关目标系统中一个或所有进程拥有的一个或多个句柄的信息. 使用形式 用户模式!handle [Handle [UMFlags [TypeName]]] !handle -? 内核模式!handle [Handle [KMFlags [Process [TypeName]]]] 参数 Handle指定要显示的句柄的索引.如果Handle为-1或省略此参数,调试器将显示与当前进程关联的所有句柄的数据.如果句柄为0,调试器将显示所有句柄的数据. UMFlag…
!dlls 简介 !dlls扩展显示所有加载模块或指定线程或进程正在使用的所有模块的表条目. 使用形式 !dlls [Options][LoaderEntryAddress] !dlls -h 参数 Options 指定输出的级别. 此参数可以是下列值中的任意组合: -f 显示文件标头. -s 显示部分标头. -a 显示完成模块信息. (此选项相当于-f-s.) -c **** ModuleAddress 显示包含的模块ModuleAddress. -i 对显示的初始化顺序进行排序. -l 对显…
.load, .loadby (Load Extension DLL) 简介 .load和.loadby命令将新的扩展DLL加载到调试器中. 使用形式 .load DLLName !DLLName.load .loadby DLLName ModuleName 参数 DLLName 指定要加载的调试器扩展DLL.如果使用.load命令,DLLName应包含完整路径.如果使用.loadby命令,DLLName应仅包含文件名. ModuleName 指定与DLL name指定的扩展DLL位于同一目录…
!envvar 简介 !envvar扩展命令显示特定环境变量的值. 使用形式 !envvar Variable 参数 Variable指定显示其值的环境变量.变量不区分大小写. 环境 Windows 2000 不可用 Windows XP 及更高版本 Exts.dll 备注 这个!envvar扩展在用户模式和内核模式下都可以工作.但是,在内核模式下,当您将空闲线程设置为当前进程时,指向进程环境块(PEB)的指针为空,因此失败.在内核模式下!envvar扩展显示目标计算机上的环境变量,如下例所示:…
.formats (Show Number Formats) .formats命令在当前线程和进程的上下文中计算表达式或符号,并以多种数字格式显示它. .formats expression 参数: expression指定要计算的表达式. 环境: 模式 用户模式下,内核模式 目标 实时. 崩溃转储 平台 全部 计算的表达式以十六进制.十进制.八进制和二进制格式以及单精度和双精度浮点格式显示.当字节对应于标准的ascii字符时,也会显示ascii字符格式.如果表达式在允许的范围内,则它也被解释为…
!address 这个!address扩展命令显示有关目标进程或目标计算机使用的内存的信息. 用户模式: !address Address !address -summary !address [-f:F1,F2,...] {[-o:{csv | tsv | 1}] | [-c:"Command"]} !address -? | -help 内核模式: !address Address !address 参数: Address仅显示包含地址的地址空间区域. -summary仅显示摘要信…
u, ub, uu (Unassemble) u*命令显示内存中指定程序代码的汇编转换.不要将此命令与~u(解冻线程)命令混淆. u[u|b] Range u[u|b] Address u[u|b] 参数: Range指定包含要反汇编的指令的内存范围.如果使用b标志,则必须使用“address llength”语法而不是“address1 address2”语法指定范围. Address指定要反汇编的内存范围的开始. b通过倒数确定要反汇编的内存范围.如果使用ub地址,则反汇编的范围将是以地址结…
e, ea, eb, ed, eD, ef, ep, eq, eu, ew, eza (Enter Values) e*命令将您指定的值输入内存.不要将此命令与~e(Thread-Specific Command)限定符混淆. e{b|d|D|f|p|q|w} Address [Values] e{a|u|za|zu} Address "String" e Address [Values] 参数: Address指定输入值的起始地址.调试器将替换地址和每个后续内存位置处的值,直到所有值…
lm (List Loaded Modules) lm命令显示指定的加载模块.输出包括模块的状态和路径. lmOptions [a Address] [m Pattern | M Pattern] 参数: Options以下选项的任意组合:D----使用调试器标记语言显示输出.o---仅显示加载的模块.l---仅显示其符号信息已加载的模块.v---显示详细信息. 显示所包括的符号文件名称. 图像文件名称. 校验和信息. 版本信息. 日期戳,时间戳和是否托管该模块的信息代码 (CLR). 如果相关…
dv (Display Local Variables) dv命令显示当前作用域中所有局部变量的名称和值. dv [Flags] [Pattern] 参数: Flags显示其他信息.可以包括以下任何区分大小写的标志:/f <addr>:允许您指定任意函数地址,以便可以查看任何代码的参数和局部变量.它关闭值显示并暗示/v./f标志必须是最后一个标志.如果字符串被引用,参数筛选模式仍然可以在其后面指定./i:使显示器指定变量的类型:局部.全局.参数.函数或未知./t :使显示包含每个局部变量的数据…
dt (Display Type) dt命令显示有关局部变量.全局变量或数据类型的信息.这可以显示有关简单数据类型以及结构和联合的信息. 用户模式下: dt [-DisplayOpts] [-SearchOpts] [module!]Name [[-SearchOpts] Field] [Address] [-l List] dt [-DisplayOpts] Address [-l List] dt -h 内核模式下: [Processor] dt [-DisplayOpts] [-Searc…
? (Command Help) 问号(?)字符显示所有命令和运算符的列表.问号本身显示命令帮助. 环境 模式 用户模式下,内核模式 目标 实时. 崩溃转储 平台 全部 0:000> ? Open debugger.chm for complete debugger documentation B[C|D|E][<bps>] - clear/disable/enable breakpoint(s) BL - list breakpoints BA <access> <s…