windbg 调试器简明手册——第 7 章——调试器命令——第 4 节——逾命令

本部分讨论了CDB、KD和WinDbg中可以使用的各种调试器逾命令。这些命令都有一个前缀句点(.)

    所谓逾命令(Meta-Commands),是指区别于基础命令的命令,而又没归入扩展命令。这部分指令主要用于对调试器进行设置或操控,对调试环境进行配置等,而非用于控制调试软件本身。

参数说明比较繁杂,使用时请参阅微软相文档(注意,文档网址可能改变):

https://learn.microsoft.com/en-us/windows-hardware/drivers/debuggercmds/meta-commands

在调试器输入命令 .hh 也可以打开帮助文档。

目录

1.  .abandon(Abandon Process)(抛弃进程)

2.  .allow_exec_cmds(Allow Execution Commands)(允许执行命令)

3.  .allow_image_mapping(Allow image mapping)(允许映像映射)

4.  .apply_dbp(Apply Data Breakpoint to Context)(应用数据断点于上下文)

5.  .asm(Change Disassembly Option)(改变反汇编选项)

6.  .attach(Attach to Process)(附加到进程)

7.  .beep(Speaker Beep)(发出蜂鸣声)

8.  .bpcmds(Display Breakpoint Commands)(显示断点命令)

9.  .bpsync(Synchronize Threads at Breakpoint)(在断点同步线程)

10.  .breakin(Break to the Kernel Debugger)( 中断到内核调试器)

11.  .browse(Display Command in Browser)(在命令窗口显示命令输出)

12.  .bugcheck(Display Bug Check Data)(显示Bug校验数据)

13.  .cache(Set Cache Size)(设置缓存大小)

14.  .call(Call Function)(调用函数)

15.  .chain(List Debugger Extensions)(列出调试器扩展)

16.  .childdbg(Debug Child Processes)(调试子进程)

17.  .childdbg(Debug Child Processes)(调试子进程)

18.  .clients(List Debugging Clients)(列出调试客户端)

19.  .closehandle(Close Handle)(关闭句柄)

20.  .cls(Clear Screen)(清屏)

21.  .context(Set User-Mode Address Context)(设置用户模式地址上下文)

22.  .copysym(Copy Symbol Files)(复制符号文件)

23.  .cordll(Control CLR Debugging)(控制CLR调试)

24.  .crash(Force System Crash)(强制系统崩溃)

25.  .create(Create Process)(创建进程)

26.  .createdir(Set Created Process Directory)(设置创建进程目录)

27.  .cxr(Display Context Record)(显示上下文记录)

28.  .dbgdbg(Display Current Debugger)(显示当前调试器)

29.  .detach(Detach from Process)(从进程分离)

30.  .dml_flow(Unasemmble  with Links)(带链接反汇编)

31.  .dml_start(Display DML Starting Point)(显示DML起点)

32.  .dump(Create Dump File)(创建崩溃转储文件)

33.  .dumpcab(Create Dump File CAB)(创建崩溃转储文件CAB)

34.  .dvalloc(Allocate Memory)(分配内存)

35.  .dvfree(Free Memory)(释放内存)

36.  .echo(Echo Comment)(显示注释)

37.  .echotime(Show Current Time)(显示当前时间)

38.  .echotimestamps (Show Time Stamps)(显示时间戳)

39.  .echotimestamps (Show Time Stamps)(显示时间戳)

40.  .ecxr (Display Exception Context Record)( 显示异常上下文记录)

41.  .effmach (Effective Machine)(高效机器)

42.  .enable_long_status (Enable Long Integer Display)(使能长整型显示基数)

43.  .enable_unicode (Enable Unicode Display)(使能Unicode 显示)

44.  .endpsrv (End Process Server)(终止进程服务)

45.  .endsrv (End Debugging Server)(终止调试服务)

46.  .enumtag (Enumerate Secondary Callback Data)(枚举辅助回调数据)

47.  .event_code (Display Event Code)(显示事件代码)

48.  .eventlog (Display Recent Events)(显示最近事件)

49.  .exdicmd (EXDI Command)( EXDI命令)

50.  .exepath (Set Executable Path)(设置执行路径)

51.  .expr (Choose Expression Evaluator)( 选择表达式求值器)

52.  .exptr (Display Exception Pointers)(显示异常指针)

53.  .exr (Display Exception Record)(显示异常记录)

54.  .excr (Display Exception Context Record)(显示异常上下文记录)

55.  .extmatch (Display All Matching Extensions)(显示所有匹配扩展)

56.  .extpath (Set Extension Path)(设置扩展路径)

57.  .f+,.f- (Shift Local Context)(切换局部上下文)

58.  .fiber (Set Fiber Context)( 设置纤维上下文)

59.  .fiximports( Fix Target Module Imports)( 修复目标模块导入 )

60.  .flash_on_break( Flash On Break)( 中断闪烁 )

61.  .fnent ( Display Function Data )( 显示函数数据 )

62.  .fnret ( Display Function Return Value )( 显示函数返回值 )

63.  .force_radix_output ( Use Radix for Integers )( 设定整数显示进制 )

64.  .force_tb ( Forcibly Allow Branch Tracing )( 强制允许分支追踪 )

65.  .format ( Show Number Formats )( 显示数的格式 )

66.  .fpo ( Control FPO Overrides )( 控制 FPO 覆盖 )

67.  .frame ( Set Local Context )( 设置局部上下文 )

68.  .help ( Meta-Command Help )( 逾命令帮助 )

69.  .hh ( Open HTML Help File )(打开 HTML格式的帮助文档 )

70.  .hideinjectedcode ( Hide Injected Code )( 隐藏注入代码 )

71.  .holdmem ( Hold and Compare Memory )( 保存并比较内存 )

72.  .idle_cmd( Set Idle Command )( 设置空闲命令 )

73.  . ignore_missing_pages (Suppress Missing Page Errors )( 抑制缺页错误 )

74.  .inline( Toggle Inline Function Debugging )( 切换内联函数调试 )

75.  .imgscan( Find Image Headers )( 寻图像头 )

76.  .jdinfo( Use JIT_DEBUG_INFO )( 使用 JIT_DEBUG_INFO )

77.  .kdfiles( Set Driver Replacement Map )( 设置驱动器替代映射 )

78.  .kdtargetmac( Display Target MAC Address)( 显示目标MAC 地址 )

79.  .kframes( Set Stack Length)( 设置跟踪栈长 )

80.  .kill( Kill Process)( 结束线程 )

81.  .lastevent( Display Last Event)( 显示最后事件 )

82.  .line( Toggle Source Line Support )( 切换源行支持 )

83.  .load,.loadby( Load Extension DLL )( 加载扩展DLL )

84.  .locale( Set Locale )( 设置本地化 )

85.  .logappend( Append Log File )( 追加日志 )

86.  .logclose( Close Log File )( 关闭日志 )

87.  .logfile(Display Log File Status )( 显示日志文件状态 )

88.  .logopen(Open Log File)( 打开日志文件 )

89.  .netuse(Control Network Connections)( 控制网络连接 )

90.  .noshell(Prohabit Shell Commands)( 禁用shell命令 )

91.  .noversion(Disable Version Checking)( 禁用版本检查 )

92.  .ocommand(Expect Commands from Target)( 期望来自目标的命令 )

93.  .nvload(NatVis Load)( NatVis 载入 )

94.  .nvlist(NatVis List)( NatVis 列表 )

95.  .nvunload(NatVis Unload)( NatVis 卸载 )

96.  .nvunloadall(NatVis Unload All)( NatVis 全卸载 )

97.  .ofilter(Filter Target Output)(过滤目标输出)

98.  .open(Open Source File)(打开源文件)

99.  .opendump(Open Dump File)(打开转储文件)

100.  .outmask(Control Output Mask)(控制输出掩码)

101.  .pagein(Page In Memory)(内存中移页)

102.  .pcmd(Set Prompt Command)(设置提示命令)

103.  .pop(Restore Debugger State)(恢复调试器状态)

104.  .prefer_dml(Prefer Debugger Markup Language)( 首选调试器标记语言)

105.  .process(Set Process Context)( 设置进程上下文)

106.  .prompt_allow(Control Prompt Display)( 控制跟踪提示信息)

107.  .push(Save Debugger State)( 保存调试器状态)

108.  .quit_lock(Prevent Accidental Quit)( 防止意外退出)

109.  .read_mem(Read Memory from File)( 从文件读二进制到内存)

110.  .reboot(Reboot Target Computer)( 重启目标计算机)

111.  .record_branches(Enable Branch Recording)( 使能分支记录)

112.  .reload(Reload Module)( 重载模块)

113.  .remote(Create Remote.exe Server)( 创建Remote.exe服务器)

114.  .remote_exit(Exit Debugging Client)( 退出调试客户端)

115.  .restart(Restart Target Application)( 重启目标应用)

116.  .restart(Restart Kernel Connection)( 重启内核连接)(仅在内核模式下有效)

117.  .rrestart(Register for Restart)( 注册重启)

118.  .scroll_prefs (Control Source Scrolling Preferences)( 控制源滚动首选项)

119.  .scriptdebug (Debug JavaScript)( 调试JavaScript)

120.  .scriptlist (List Loaded Scripts)( 列出已加载的脚本)

121.  .scriptload (Load Script)(加载脚本)

122.  .scriptproviders (List Script Providers)( 列出活动脚本提供程序)

123.  .scriptrun (Run Script)( 运行脚本)

124.  .scriptunload (Unload Script)( 卸载脚本)

125.  .secure (Activate Secure Mode)( 激活安全模式)

126.  .send_file (Send File)( 发送文件到服务器)

127.  .server (Create Debugging Server)( 创建调试服务器 )

128.  .servers (List Debugging Servers)(列出调试服务器 )

129.  .setdll (Set Default Extension DLL)(设置默认扩展DLL)

130.  .shell (Command Shell)(命令Shell)

131.  .settings (Set Debug Settings)(设计调试配置)

132.  .show_read_failures(显示或禁显读取失败)

133.  .show_sym_failures(显示或禁显符号和类型查找)

134.  .sleep(Pause Debug)(暂停调试)

135.  .sound_notify(Use Notification Sound)(使用声音通知)

136.  .srcfix, .lsrcfix (Use Source Server)(使用源服务器)

137.  .srcnoisy (Noisy Source Loading)(使用源服务器)

138.  .srcnoisy (Noisy Source Loading)(控制源文件加载)

139.  .srcpath, .lsrcpath (Set Source Path)(控制源文件路径)

140.  .step_filter (Set Step Filter)(设置步进过滤器)

141.  .suspend_ui (Suspend WinDbg Interface)( 暂停 WinDbg 接口)

142. .symfix (Set Symbol Store Path)( 设置符号存储路径)

143. .symopt (Set Symbol Options)( 设置符号选项)

144. .sympath (Set Symbol Path)( 设置符号路径)

145. .thread (Set Register Context)( 设置注册上下文线程)

146. .time(Display System Time)( 显示系统时间)

147. .tlist(List Process IDs)( 列出进程ID)

148. .trap(Display Trap Frame)( 显示陷阱帧)

149. .tss(Display Task State Segment)( 显示任务状态段)

150. .ttime(Display Thread Times)( 显示线程时间)

151. .typeopt(Set Type Options)( 设置类型选项 )

152. .unload(Unload Extension DLL)( 卸载扩展DLL )

153. .unloadall(Unload All Extension DLLs)( 卸载所有扩展DLL)

154. .urestart(Unregister for Restart)( 取消注册以重新启动)

155. .wake(Wake Debugger)( 唤醒调试器)

156. .write_cmd_hist (Write Command History)(写命令历史)

157. .writemem(Write Memory to File)( 将内存写入文件)

158. .wtitle(Set Window Title)( 设置窗口标题)


1.  .abandon(Abandon Process)(抛弃进程)

.abandon 命令会结束调试会话,但目标应用程序仍处于调试状态。这将调试器返回到休眠模式。

.abandon [/h|/n]

参数说明:

/h —— 任何未处理的调试事件都将继续执行并标记为已处理。这是默认设置。

/n —— 任何未处理的调试事件都将继续执行,但不会进行处理。

2.  .allow_exec_cmds(Allow Execution Commands)(允许执行命令)

    .allow_exec_cmds 命令控制是否可以使用执行命令。

.allow_exec_cmds 0

.allow_exec_cmds 1

.allow_exec_cmds

参数说明:

1 —— 禁止执行命令

0 —— 允许执行命令

3.  .allow_image_mapping(Allow image mapping)(允许映像映射)

    .allow_image_mapping 命令控制是否映射映像文件。

.allow_image_mapping [/r] 0

.allow_image_mapping [/r] 1

.allow_image_mapping

/r —— 重新加载调试器模块列表中的所有模块。这等价于 .reload /d。

0 —— 阻止映射映射像文件。

1 —— 允许映射映像文件。

4.  .apply_dbp(Apply Data Breakpoint to Context)(应用数据断点于上下文)

    .apply_dbp 命令将当前进程现有的数据断点应用到指定的寄存器上下文。

.apply_dbp [/m Context]

参数说明:

/m Context —— 指定内存中寄存器上下文( CONTEXT 结构 )的地址,要将当前进程的数据断点应用到该地址。

5.  .asm(Change Disassembly Option)(改变反汇编选项)

    .asm 命令控制反汇编代码的显示方式。

.asm

.asm[-] Options

参数说明:

- —— 禁用指定的选项。如果未使用减号,则启用指定的选项。

Options —— 可以是以下任意数量的选项:

ignore_output_width阻止调试器检查反汇编显示中的行宽。

no_code_bytes(仅限 x86 和 x64 目标)禁止显示原始字节。

source_line:  在反汇编的每一行前面加上源代码的行号。

verbose: (仅限 Itanium 目标平台)使捆绑包类型信息与标准反汇编信息一起显示。

6.  .attach(Attach to Process)(附加到进程)

    .attach 命令用于附加到新的目标应用程序。

.attach [-premote RemoteOptions] AttachOptions PID

参数说明:

RemoteOption —— 指定要连接的进程服务器。选项与命令行选项 -premote 的选项相同。

AttachOptions —— 指定附加方式。这可以包括以下任何选项:

-b —— 阻止调试器在附加到目标进程时请求初始断点。如果应用程序已挂起,或者你希望避免在目标进程中创建断点线程,此选项非常有用。

-e —— 允许调试器附加到正在调试的进程。

-k —— 启动本地内核调试会话。

-f —— 冻结所有目标应用程序中的所有线程,但新附加的目标进程除外。这些线程将保持冻结状态,直到新附加的进程中发生异常。请注意,初始断点也属于异常。可以使用 ~u(解冻线程)命令解冻单个线程。

-r —— 使调试器在附加到目标进程时启动该进程。如果应用程序已挂起,并且你希望它恢复执行,此选项非常有用。

-v —— 对指定的进程进行非侵入式调试。

PID  —— 指定新目标应用程序的进程 ID。

7.  .beep(Speaker Beep)(发出蜂鸣声)

.beep 命令会使电脑扬声器发出声音。

8.  .bpcmds(Display Breakpoint Commands)(显示断点命令)

    .bpcmds 命令显示用于设置每个当前断点的命令。

.bpcmds

9.  .bpsync(Synchronize Threads at Breakpoint)(在断点同步线程)

    当一个线程到达断点时,.bpsync 命令会冻结所有其他线程,直到应用该断点的线程单步执行通过该断点为止。

.bpsync 1

.bpsync 0

.bpsync

参数说明:

1 —— 当一个线程到达断点时,所有线程都会冻结。断点所在的线程执行完毕后,其他线程才会解冻。

0 —— 当一个线程到达断点时,其他线程可以继续执行。这是默认行为。

10.  .breakin(Break to the Kernel Debugger)( 中断到内核调试器)

    .breakin 命令用于在用户模式调试和内核模式调试之间切换。当你从内核调试器控制用户模式调试器时,此命令尤其有用

11.  .browse(Display Command in Browser)(在命令窗口显示命令输出)

    .browse 命令会在一个新的命令浏览器窗口中显示指定命令的输出。

.browse Command

12.  .bugcheck(Display Bug Check Data)(显示Bug校验数据)

.bugcheck 命令显示目标计算机上的Bug检查数据。

.bugcheck

13.  .cache(Set Cache Size)(设置缓存大小)

.cache 命令用于设置用于保存从目标获取的数据的缓存大小。它还可以设置一些缓存和内存选项。

.cache Size

.cache Option

.cache

14.  .call(Call Function)(调用函数)

    .call 命令使目标进程执行一个函数。

.call [/v] Function( Arguments )

.call /s Prototype Function( Arguments )

.call /c

.call /C

15.  .chain(List Debugger Extensions)(列出调试器扩展)

    .chain 命令按默认搜索顺序列出所有已加载的调试器扩展。

.chain

.chain /D

16.  .childdbg(Debug Child Processes)(调试子进程)

    .childdbg 命令用于控制子进程的调试。

17.  .childdbg(Debug Child Processes)(调试子进程)

.childdbg 0

.childdbg 1

.childdbg

0 禁用,1 启用

18.  .clients(List Debugging Clients)(列出调试客户端)

    .clients 命令列出当前连接到调试会话的所有调试客户端。

.clients

19.  .closehandle(Close Handle)(关闭句柄)

    .closehandle 命令关闭目标应用程序拥有的句柄。

.closehandle Handle

.closehandle -a

参数说明:

Handle —— 需关闭的句柄

-a —— 关闭目标应用程序拥有的所有句柄。

20.  .cls(Clear Screen)(清屏)

    .cls 命令会清除调试器命令窗口显示的内容。

.cls

21.  .context(Set User-Mode Address Context)(设置用户模式地址上下文)

    .context 命令指定进程的哪个页面目录将用于用户模式地址上下文,或者显示当前用户模式地址上下文。

.context [PageDirectoryBase]

参数说明:

PageDirectoryBase:指定所需进程的页面目录的基址。用户模式地址上下文将设置为此页面目录。如果 PageDirectoryBase 为零,则用户模式地址上下文将设置为当前系统状态的页面目录。如果省略 PageDirectoryBase,则显示当前用户模式地址上下文。

22.  .copysym(Copy Symbol Files)(复制符号文件)

    .copysym 命令将当前符号文件复制到指定目录。

.copysym [/l] Path

参数说明:

/l —— 使每个符号文件在复制时都加载。

Path —— 指定符号文件应复制到的目录。复制操作不会覆盖现有文件。

23.  .cordll(Control CLR Debugging)(控制CLR调试)

.cordll 命令控制托管代码调试和 Microsoft .NET 公共语言运行时 (CLR)。

.cordll [Options]

参数说明:

Options —— 以下一项或多项:

-l(小写字母 L) —— 加载 CLR 调试模块。

-I **** 模块(大写字母 i) ——指定要调试的 CLR 模块的名称或基地址。

-u —— 卸载 CLR 调试模块。

-e —— 启用 CLR 调试。

-d —— 禁用 CLR 调试。

-D —— 禁用 CLR 调试并卸载 CLR 调试模块。

-N —— 重新加载 CLR 调试模块。

-lp **** 路径 —— 指定 CLR 调试模块的目录路径。

-se —— 启用使用 CLR 调试模块的短名称 mscordacwks.dll。

-sd —— 禁用使用 CLR 调试模块的短名称 mscordacwks.dll。相反,调试器会使用 CLR 调试模块的长名称,即 mscordacwks_<spec>.dll。如果你担心名称不匹配,可以禁用短名称的使用,从而避免使用本地 CLR。​​

-ve —— 启用 CLR 模块加载的详细模式。

-vd —— 禁用 CLR 模块加载的详细模式。

24.  .crash(Force System Crash)(强制系统崩溃)

    .crash 命令会导致目标计算机发出错误检查。

.crash

25.  .create(Create Process)(创建进程)

    .create 命令用于创建一个新的目标应用程序。

.create [-premote RemoteOptions] [-f] CommandLine

26.  .createdir(Set Created Process Directory)(设置创建进程目录)

    .createdir 命令控制调试器创建的任何进程的起始目录和继承关系。

.createdir [-i | -I] [Path]

27.  .cxr(Display Context Record)(显示上下文记录)

    .cxr 命令显示保存在指定地址的上下文记录,并设置寄存器上下文。

.cxr [Options] [Address]

28.  .dbgdbg(Display Current Debugger)(显示当前调试器)

.dbgdbg

29.  .detach(Detach from Process)(从进程分离)

    .detach 命令会结束调试会话,但不会中断任何用户模式目标应用程序的运行。

.detach [ /h | /n ]

30.  .dml_flow(Unasemmble  with Links)(带链接反汇编)

    .dml_flow 命令显示反汇编代码块,并提供可用于构建代码流程图的链接。

.dml_flow Start Target

31.  .dml_start(Display DML Starting Point)(显示DML起点)

    .dml_start 命令显示的输出可作为使用支持调试器标记语言 (DML) 的命令进行探索的起点。

.dml_start

.dml_start filename

32.  .dump(Create Dump File)(创建崩溃转储文件)

    .dump 命令会创建用户模式或内核模式崩溃转储文件。

.dump [options] FileName

.dump /?

33.  .dumpcab(Create Dump File CAB)(创建崩溃转储文件CAB)

    .dumpcab 命令会创建一个包含当前转储文件的 CAB 文件。

.dumpcab [-a] CabName

注:CAB 文件(“Cabinet”的缩写)是 Microsoft Windows 系统自带的一种压缩归档格式。它类似于 .zip 文件,可以将多个文件安全地存储在一个更小的压缩文件中。Windows 系统广泛使用 CAB 文件来分发软件、系统更新和硬件驱动程序。

34.  .dvalloc(Allocate Memory)(分配内存)

.dvalloc 命令使 Windows 为目标进程分配额外的内存。

.dvalloc [Options] Size

35.  .dvfree(Free Memory)(释放内存)

    .dvfree 命令释放目标进程拥有的已分配内存。

.dvfree [/d] BaseAddress Size

36.  .echo(Echo Comment)(显示注释)

    .echo 命令显示注释字符串。

.echo String

.echo "String"

37.  .echotime(Show Current Time)(显示当前时间)

    .echotime

38.  .echotimestamps (Show Time Stamps)(显示时间戳)

    .echotimestamps 命令用于打开或关闭时间戳信息的显示。

39.  .echotimestamps (Show Time Stamps)(显示时间戳)

.echotimestamps 0

.echotimestamps 1

.echotimestamps

40.  .ecxr (Display Exception Context Record)( 显示异常上下文记录)

    .ecxr 命令显示与当前异常关联的上下文记录。

    .ecxr

41.  .effmach (Effective Machine)(高效机器)

    .effmach [MachineType]

42.  .enable_long_status (Enable Long Integer Display)(使能长整型显示基数)

    .enable_long_status 命令指定调试器是以十进制格式还是以默认基数显示长整数。

.enable_long_status 0

.enable_long_status 1

43.  .enable_unicode (Enable Unicode Display)(使能Unicode 显示)

    .enable_unicode 命令指定调试器是否将 USHORT 指针和数组显示为 Unicode 字符串。

.enable_unicode 0

.enable_unicode 1

44.  .endpsrv (End Process Server)(终止进程服务)

.endpsrv 命令会导致当前进程服务器或 KD 连接服务器关闭。

    .endpsrv

45.  .endsrv (End Debugging Server)(终止调试服务)

    .endsrv 命令会导致调试器取消正在运行的调试服务器。

    .endsrv ServerID

46.  .enumtag (Enumerate Secondary Callback Data)(枚举辅助回调数据)

    .enumtag 命令显示辅助错误检查回调数据和所有数据标签。

    .enumtag

47.  .event_code (Display Event Code)(显示事件代码)

    .event_code 命令显示当前事件指令。

    .event_code

48.  .eventlog (Display Recent Events)(显示最近事件)

    .eventlog 命令显示最近的 Microsoft Win32 调试事件,例如模块加载、进程创建和终止以及线程创建和终止。

    .eventlog

49.  .exdicmd (EXDI Command)( EXDI命令)

    .exdicmd 文件使用活动的 EXDI 调试连接向目标系统发送扩展调试接口 (EXDI) 命令。

    exdicmd component|target parameters

50.  .exepath (Set Executable Path)(设置执行路径)

    .exepath 命令设置或显示可执行文件搜索路径。

.exepath[+] [Directory [; ...]]

51.  .expr (Choose Expression Evaluator)( 选择表达式求值器)

    .expr 命令指定默认表达式求值器。

.expr /s masm

.expr /s c++

.expr /q

.expr

52.  .exptr (Display Exception Pointers)(显示异常指针)

    .exptr 命令显示 EXCEPTION_POINTERS 结构。

.exptr Address

53.  .exr (Display Exception Record)(显示异常记录)

    .exr 命令显示异常记录的内容。

.exr Address

.exr -1

54.  .excr (Display Exception Context Record)(显示异常上下文记录)

    .excr 命令显示与当前异常关联的上下文记录。

.excr

55.  .extmatch (Display All Matching Extensions)(显示所有匹配扩展)

    .extmatch 命令显示当前已加载的扩展 DLL 导出的与指定模式匹配的扩展命令。

.extmatch [Options] Pattern

56.  .extpath (Set Extension Path)(设置扩展路径)

    .extpath 命令设置或显示扩展 DLL 搜索路径。

.extpath[+] [Directory[;...]]

57.  .f+,.f- (Shift Local Context)(切换局部上下文)

    .f+ 命令将帧索引移至当前堆栈中的下一帧。.f- 命令将帧索引移至当前堆栈中的上一帧。

.f+ 

.f-

58.  .fiber (Set Fiber Context)( 设置纤维上下文)

    .fiber 命令指定用于光纤上下文的光纤。

.fiber [Address]

59.  .fiximports( Fix Target Module Imports)( 修复目标模块导入 )

    .fiximports 命令验证并更正目标模块的所有静态导入链接。

.fiximports Module

60.  .flash_on_break( Flash On Break)( 中断闪烁 )

    .flash_on_break 命令指定当 WinDbg 最小化且目标中断时,WinDbg 任务栏条目是否闪烁。

.flash_on_break on

.flash_on_break off

.flash_on_break

61.  .fnent ( Display Function Data )( 显示函数数据 )

.fnent 命令显示有关指定函数的函数表条目的信息。

.fnent Address

62.  .fnret ( Display Function Return Value )( 显示函数返回值 )

    .fnret 命令显示有关函数返回值的信息。

.fnret [/s] Address [Value]

63.  .force_radix_output ( Use Radix for Integers )( 设定整数显示进制 )

    .force_radix_output 命令指定整数是以十进制格式显示还是以默认进制显示。

.force_radix_output 0

.force_radix_output 1

64.  .force_tb ( Forcibly Allow Branch Tracing )( 强制允许分支追踪 )

    .force_tb 命令强制处理器在启动过程的早期阶段跟踪分支。

.force_tb

65.  .format ( Show Number Formats )( 显示数的格式 )

    .formats 命令在当前线程和进程的上下文中计算表达式或符号,并以多种数格式显示它。

.formats expression

66.  .fpo ( Control FPO Overrides )( 控制 FPO 覆盖 )

    .fpo 命令控制帧指针省略 (FPO) 覆盖。

.fpo -s [-fFlag] Address

.fpo -d Address

.fpo -x Address

.fpo -o Address

.fpo Address

67.  .frame ( Set Local Context )( 设置局部上下文 )

    .frame 命令指定用于解释局部变量的局部上下文(作用域),或显示当前局部上下文。

.frame [/c] [/r] [FrameNumber]

.frame [/c] [/r] = BasePtr [FrameIncrement]

.frame [/c] [/r] = BasePtr StackPtr InstructionPtr

68.  .help ( Meta-Command Help )( 逾命令帮助 )

    .help 命令会显示所有逾命令的列表。

.help

.help /D

参数说明:

/D —— 使用调试器标记语言显示输出。输出包含一个链接列表,点击这些链接可以查看以特定字母开头的元命令。

使用“.hh <command>”或打开调试器目录中的 debugger.chm 文件,即可获取有关命令的详细文档。.hh 命令也是非常有用的, 可以直接打开帮助文件 debugger.chm 。例如:

.hh

.hh .help

69.  .hh ( Open HTML Help File )(打开 HTML格式的帮助文档 )

.hh 命令会打开 Windows 调试工具文档。

.hh [Text]

Text——指定要在帮助文档索引中查找的文本。

70.  .hideinjectedcode ( Hide Injected Code )( 隐藏注入代码 )

    .hideinjectedcode 命令用于开启或关闭对注入代码的隐藏。

.hideinjectedcode { on | off }

.hideinjectedcode help

.hideinjectedcode

71.  .holdmem ( Hold and Compare Memory )( 保存并比较内存 )

    .holdmem 命令保存内存范围并将其与其他内存范围进行比较。

.holdmem -a Range

.holdmem -d { Range | Address }

.holdmem -D

.holdmem -o

.holdmem -c Range

72.  .idle_cmd( Set Idle Command )( 设置空闲命令 )

    .idle_cmd 命令用于设置空闲命令。该命令会在控制权从目标返回到调试器时执行。例如,当目标程序到达断点时,就会执行此命令。

.idle_cmd

.idle_cmd String

.idle_cmd /d

73.  . ignore_missing_pages (Suppress Missing Page Errors )( 抑制缺页错误 )

    .ignore_missing_pages 命令用于抑制内核内存转储中缺页时的错误消息。

.ignore_missing_pages 0

.ignore_missing_pages 1

.ignore_missing_pages

74.  .inline( Toggle Inline Function Debugging )( 切换内联函数调试 )

.inline 命令用于启用或禁用内联函数调试。

.inline 0

.inline 1

75.  .imgscan( Find Image Headers )( 寻图像头 )

    .imgscan 命令扫描虚拟内存中的图像头。

    .imgscan [Options]

76.  .jdinfo( Use JIT_DEBUG_INFO )( 使用 JIT_DEBUG_INFO )

    .jdinfo 命令使用 JIT_DEBUG_INFO 结构作为异常源和即时 (JIT) 调试的上下文。该结构的地址通过 AeDebug 注册表项中指定的 %p 参数传递给 .jdinfo 命令。

.jdinfo Address

77.  .kdfiles( Set Driver Replacement Map )( 设置驱动器替代映射 )

    .kdfiles 命令读取一个文件,并将其内容用作驱动程序替换映射。

.kdfiles MapFile

.kdfiles -m OldDriver NewDriver

.kdfiles -s SaveFile

.kdfiles -c

.kdfiles

78.  .kdtargetmac( Display Target MAC Address)( 显示目标MAC 地址 )

.kdtargetmac

79.  .kframes( Set Stack Length)( 设置跟踪栈长 )

    .kframes 命令设置栈跟踪显示的默认长度。

.kframes FrameCountDefault

80.  .kill( Kill Process)( 结束线程 )

    在用户模式下,.kill 命令会终止正在调试的进程。

在内核模式下,.kill 命令会终止目标计算机上的进程。

(1) 用户模式

.kill [ /h | /n ]

/h —— (仅限用户模式)任何未完成的调试事件都将继续执行并标记为已处理。这是默认设置。

/n —— (仅限用户模式)任何未完成的调试事件都将继续执行,但不标记为已处理。

(2) 内核模式

.kill Process

Process —— 指定要终止的进程地址。如果省略 Process 参数或指定为零,则将终止当前系统状态下的默认进程。

81.  .lastevent( Display Last Event)( 显示最后事件 )

    .lastevent 命令显示最近发生的异常或事件。

.lastevent

82.  .line( Toggle Source Line Support )( 切换源行支持 )

    .lines 命令启用或禁用对源行信息的支持。

.lines [-e|-d|-t]

83.  .load,.loadby( Load Extension DLL )( 加载扩展DLL )

    .load 和 .loadby 命令将新的扩展 DLL 加载到调试器中。

.load DLLName 

!DLLName.load

.loadby DLLName ModuleName

84.  .locale( Set Locale )( 设置本地化 )

    .locale 命令用于设置区域设置或显示当前区域设置。

.locale [Locale]

例如:

kd> .locale

Locale: C

kd> .locale E

Locale: English_United States.1252

kd> .locale c

Locale: Catalan_Spain.1252

kd> .locale C

Locale: C

85.  .logappend( Append Log File )( 追加日志 )

    .logappend 命令会将调试器命令窗口中的事件和命令的副本追加到指定的日志文件中。

.logappend [/u] [FileName]

86.  .logclose( Close Log File )( 关闭日志 )

    .logclose 命令会关闭所有打开的日志文件。

.logclose

87.  .logfile(Display Log File Status )( 显示日志文件状态 )

.logfile 命令用于判断日志文件是否存在,并显示文件的状态。

.logfile

88.  .logopen(Open Log File)( 打开日志文件 )

    .logopen 命令会将调试器命令窗口中的事件和命令副本发送到新的日志文件。

.logopen [Options] [FileName]

.logopen /d

89.  .netuse(Control Network Connections)( 控制网络连接 )

    .netuse 命令用于添加与网络共享的连接。

.netuse /a "[Local]" "Remote" "[User]" "[Password]"

90.  .noshell(Prohabit Shell Commands)( 禁用shell命令 )

    .noshell 命令会阻止你使用 .shell 命令。

.noshell

91.  .noversion(Disable Version Checking)( 禁用版本检查 )

.noversion 命令会禁用所有扩展 DLL 的版本检查。

.noversion

92.  .ocommand(Expect Commands from Target)( 期望来自目标的命令 )

    .ocommand 命令使目标应用程序能够向调试器发送命令。

.ocommand  String

.ocommand -d

.ocommand

93.  .nvload(NatVis Load)( NatVis 载入 )

.nvload 命令会将 NatVis 文件加载到调试器环境中。加载完成后,可视化内容将用于渲染其中定义的数据。

.nvload FileName|ModuleName

94.  .nvlist(NatVis List)( NatVis 列表 )

    .nvlist 命令列出加载到调试器环境中的 NatVis 文件。

.nvlist

95.  .nvunload(NatVis Unload)( NatVis 卸载 )

.nvunload 命令从调试器环境中卸载 NatVis 文件。

.nvunload FileName|ModuleName

96.  .nvunloadall(NatVis Unload All)( NatVis 全卸载 )

    .nvunloadall 命令从调试器环境中卸载所有 NatVis 文件。

.nvunloadall

97.  .ofilter(Filter Target Output)(过滤目标输出)

    .ofilter 命令用于过滤目标应用程序或目标计算机的输出。

.ofilter [/!] String

.ofilter ""

.ofilter

98.  .open(Open Source File)(打开源文件)

    .open 命令会在源路径中查找源文件并打开该文件。

.open [-m Address] FileName

.open -a Address

99.  .opendump(Open Dump File)(打开转储文件)

    .opendump 命令用于打开转储文件以进行调试。

.opendump DumpFile

.opendump /c "DumpFileInArchive" [CabFile]

100.  .outmask(Control Output Mask)(控制输出掩码)

.outmask 命令控制当前输出掩码。

.outmask[-] [/l] Expression

.outmask /a

.outmask /d

101.  .pagein(Page In Memory)(内存中移页)

    .pagein 命令将页移至指定的内存区域。

.pagein [Options] Address

102.  .pcmd(Set Prompt Command)(设置提示命令)

    .pcmd 命令使调试器在目标停止执行时发出命令,并在调试器命令窗口中显示带有寄存器或目标状态信息的提示。

.pcmd -s CommandString

.pcmd -c

.pcmd

103.  .pop(Restore Debugger State)(恢复调试器状态)

    .pop 命令将调试器的状态恢复到之前使用 .push(保存调试器状态)命令保存的状态。

.pop

.pop /r

.pop /r /q

104.  .prefer_dml(Prefer Debugger Markup Language)( 首选调试器标记语言)

    .prefer_dml 命令设置能够以调试器标记语言 (DML) 格式提供输出的命令的默认行为。

.prefer_dml 0

.prefer_dml 1

105.  .process(Set Process Context)( 设置进程上下文)

    .process 命令指定用于进程上下文的进程。

.process [/i] [/p [/r]] [/P] [Process]

106.  .prompt_allow(Control Prompt Display)( 控制跟踪提示信息)

.prompt_allow 命令控制在单步执行和跟踪期间以及目标程序停止执行时显示哪些信息。

.prompt_allow {+|-}Item [...]

.prompt_allow

107.  .push(Save Debugger State)( 保存调试器状态)

    .push 命令保存调试器的当前状态。

.push

.push /r

.push /r /q

108.  .quit_lock(Prevent Accidental Quit)( 防止意外退出)

    .quit_lock 命令会设置一个密码,以防止你意外结束调试会话。

.quit_lock /s NewPassword

.quit_lock /q Password

.quit_lock

109.  .read_mem(Read Memory from File)( 从文件读二进制到内存)

    .readmem 命令从指定的文件中读取原始二进制数据,并将数据复制到目标计算机的内存中。

.readmem FileName Range

110.  .reboot(Reboot Target Computer)( 重启目标计算机)

    .reboot 命令会重启目标计算机。

.reboot

111.  .record_branches(Enable Branch Recording)( 使能分支记录)

    .record_branches 命令可以记录目标代码执行的分支。

.record_branches {1|0}

.record_branches

112.  .reload(Reload Module)( 重载模块)

    .reload 命令会删除指定模块的所有符号信息,并根据需要重新加载这些符号。在某些情况下,此命令还会重新加载或卸载模块本身。

    .reload [Options] [Module[=Address[,Size[,Timestamp]]]]

.reload -?

113.  .remote(Create Remote.exe Server)( 创建Remote.exe服务器)

         .remote 命令启动 Remote.exe 服务器,从而可以远程连接到当前的调试会话。

.remote session

114.  .remote_exit(Exit Debugging Client)( 退出调试客户端)

    .remote_exit 命令会退出调试客户端,但不会结束调试会话。

.remote_exit [FinalCommands]

115.  .restart(Restart Target Application)( 重启目标应用)

.restart 命令用于重启目标应用程序。请勿将此命令与 .restart (重启内核连接) 命令混淆,后者仅在内核模式下有效。

.restart

116.  .restart(Restart Kernel Connection)( 重启内核连接)(仅在内核模式下有效)

.restart 命令重新启动内核连接。不要将此命令与 .restart(重新启动目标应用程序)命令混淆,后者仅在用户模式下工作。

    .restart

117.  .rrestart(Register for Restart)( 注册重启)

    .rrestart 命令会将调试会话注册为重启会话,以便在系统重启或应用程序故障时重新启动。

.rrestart

118.  .scroll_prefs (Control Source Scrolling Preferences)( 控制源滚动首选项)

    .scroll_prefs 命令控制在滚动到某一行时,源窗口中源的位置。

.scroll_prefs Before After

.scroll_prefs

119.  .scriptdebug (Debug JavaScript)( 调试JavaScript)

    使用 .scriptdebug 命令调试 JavaScript 脚本。

.scriptdebug FileName

120.  .scriptlist (List Loaded Scripts)( 列出已加载的脚本)

    .scriptlist 命令列出已加载的脚本。

.scriptlist

121.  .scriptload (Load Script)(加载脚本)

    .scriptload 命令将加载并执行指定的脚本文件。

.scriptload ScriptFile

122.  .scriptproviders (List Script Providers)( 列出活动脚本提供程序)

    .scriptproviders 命令列出活动的脚本提供程序。

.scriptproviders

123.  .scriptrun (Run Script)( 运行脚本)

    .scriptrun 命令会加载并运行 JavaScript 代码。

.scriptrun ScriptFile

124.  .scriptunload (Unload Script)( 卸载脚本)

    .scriptunload 命令用于卸载指定的脚本。

.scriptunload ScriptFile

125.  .secure (Activate Secure Mode)( 激活安全模式)

    .secure 命令用于激活或显示安全模式的状态。

.secure 1

.secure

126.  .send_file (Send File)( 发送文件到服务器)

    .send_file 命令用于复制文件。如果你通过进程服务器执行远程调试,它会将文件从智能客户端的计算机发送到进程服务器的计算机。

.send_file [-f] Source Destination

.send_file [-f] -s Destination

127.  .server (Create Debugging Server)( 创建调试服务器 )

.server 命令启动调试服务器,允许远程连接到当前的调试会话。

推荐的连接方式,并辅以一些额外的安全措施:

.server spipe:proto=Protocol,{certuser=Cert|machuser=Cert},pipe=PipeName[,hidden][,password=Password]

.server ssl:proto=Protocol,{certuser=Cert|machuser=Cert},port=Socket[,hidden][,password=Password]

.server ssl:proto=Protocol,{certuser=Cert|machuser=Cert},port=Socket,clicon=Client[,password=Password]

不安全的连接方法:

.server npipe:pipe=PipeName[,hidden][,password=Password][,IcfEnable]

.server tcp:port=Socket[,hidden][,password=Password][,ipversion=6][,IcfEnable]

.server tcp:port=Socket,clicon=Client[,password=Password][,ipversion=6]

.server com:port=COMPort,baud=BaudRate,channel=COMChannel[,hidden][,password=Password]

128.  .servers (List Debugging Servers)(列出调试服务器 )

    .servers 命令列出此调试器已建立的所有调试服务器。

.servers

129.  .setdll (Set Default Extension DLL)(设置默认扩展DLL)

    .setdll 命令用于更改调试器的默认扩展 DLL。

.setdll DLLName

!DLLName.setdll

130.  .shell (Command Shell)(命令Shell)

    .shell 命令启动一个 shell 进程,并将其输出重定向到调试器或指定的文件。

.shell [Options] [ShellCommand]

.shell -i InFile [-o OutFile [-e ErrFile]] [Options] ShellCommand

131.  .settings (Set Debug Settings)(设计调试配置)

    .settings 命令用于设置、修改、显示、加载和保存 Debugger.Settings 命名空间中的设置。

.settings set  namespace.setting=value

.settings set namespace.setting+=value

.settings save [file path]

.settings load file path

.settings list [namespace][-v]

.settings help

132.  .show_read_failures(显示或禁显读取失败)

.show_read_failures 命令启用或禁用读取失败的显示。

.show_read_failures /v

.show_sym_failures /V

133.  .show_sym_failures(显示或禁显符号和类型查找)

.show_sym_failures 命令启用或禁用符号查找失败和类型查找失败的显示。

.show_sym_failures /s

.show_sym_failures /S

.show_sym_failures /t

.show_sym_failures /T

134.  .sleep(Pause Debug)(暂停调试)

.sleep 命令会使用户模式调试器暂停,并使目标计算机恢复活动状态。此命令仅当你从内核调试器控制用户模式调试器时使用。

.sleep milliseconds

135.  .sound_notify(Use Notification Sound)(使用声音通知)

    .sound_notify 命令会在 WinDbg 进入等待命令状态时播放声音。

.sound_notify /ed

.sound_notify /ef File

.sound_notify /d

136.  .srcfix, .lsrcfix (Use Source Server)(使用源服务器)

    .srcfix 和 .lsrcfix 命令会自动设置源路径,以指示将使用源服务器。

.srcfix[+] [Paths]

.lsrcfix[+] [Paths]

137.  .srcnoisy (Noisy Source Loading)(使用源服务器)

    .srcnoisy 命令控制源文件加载的详细程度。

.srcnoisy [Options]

138.  .srcnoisy (Noisy Source Loading)(控制源文件加载)

    .srcnoisy 命令控制源文件加载的详细程度。

.srcnoisy [Options]

139.  .srcpath, .lsrcpath (Set Source Path)(控制源文件路径)

    .srcpath 和 .lsrcpath 命令设置或显示源文件搜索路径。

.srcpath[+] [Directory [; ...]]

.lsrcpath[+] [Directory [; ...]]

140.  .step_filter (Set Step Filter)(设置步进过滤器)

    .step_filter 命令会创建一个函数列表,在跟踪代码时,这些函数将被跳过(单步执行)。这样,你就可以跟踪代码并仅跳过某些特定的函数。它还可以在源代码模式下使用,以控制单步执行,尤其是在一行代码中存在多个函数调用时。

.step_filter "FilterList"

.step_filter /c

.step_filter

141.  .suspend_ui (Suspend WinDbg Interface)( 暂停 WinDbg 接口)

    .suspend_ui 命令会暂停 WinDbg 调试信息窗口的刷新。

.suspend_ui 0

.suspend_ui 1

.suspend_ui

142. .symfix (Set Symbol Store Path)( 设置符号存储路径)

    .symfix 命令会自动将符号路径设置为指向 Microsoft 符号库。

.symfix[+] [LocalSymbolCache]

说明:+ 表示将 Microsoft 符号存储路径附加到现有符号路径。如果未包含此路径,则会替换现有符号路径。即追加路径,下同。

例如:

kd> .symfix+ C:\MySymbolsCacheThe

+ 符号会将 Microsoft 服务器附加到你已配置的任何符号路径,而不是覆盖它们。

143. .symopt (Set Symbol Options)( 设置符号选项)

    .symopt 命令用于设置或显示符号选项。

.symopt+ Flags

.symopt- Flags

.symopt

144. .sympath (Set Symbol Path)( 设置符号路径)

    .sympath 命令设置或更改符号路径。符号路径指定调试器查找符号文件的位置。

.sympath[+] [Path [; ...]]

145. .thread (Set Register Context)( 设置注册上下文线程)

    .thread 命令指定哪个线程将用于注册上下文。

.thread [/p [/r] ] [/P] [/w] [Thread]

146. .time(Display System Time)( 显示系统时间)

    .time 命令显示有关系统时间变量的信息。

.time [-h Hours]

147. .tlist(List Process IDs)( 列出进程ID)

    .tlist 命令列出系统上正在运行的所有进程。

.tlist [Options][FileNamePattern]

148. .trap(Display Trap Frame)( 显示陷阱帧)

    .trap 命令显示陷阱帧寄存器状态,并设置寄存器上下文。

.trap [Address]

149. .tss(Display Task State Segment)( 显示任务状态段)

    .tss 命令显示当前处理器的已保存任务状态段 (TSS) 信息的格式化视图。

.tss [Address]

150. .ttime(Display Thread Times)( 显示线程时间)

    .ttime 命令显示线程的运行时间。

.ttime

151. .typeopt(Set Type Options)( 设置类型选项 )

    .typeopt 命令设置或显示类型选项。

.typeopt +Flags

.typeopt -Flags

.typeopt +FlagName

.typeopt -FlagName

.typeopt

152. .unload(Unload Extension DLL)( 卸载扩展DLL )

    .unload 命令从调试器中卸载扩展 DLL。

.unload DLLName

!DLLName.unload

153. .unloadall(Unload All Extension DLLs)( 卸载所有扩展DLL)

    .unloadall 命令会从主机系统上的调试器卸载所有扩展 DLL。

.unloadall

154. .urestart(Unregister for Restart)( 取消注册以重新启动)

.urestart 命令用于在重启或应用程序故障时注销调试会话,以便重新启动。

.urestart

155. .wake(Wake Debugger)( 唤醒调试器)

.wake 命令会结束睡眠模式。此命令仅当你从内核调试器控制用户模式调试器时使用。

.wake PID

156. .write_cmd_hist (Write Command History)(写命令历史)

    .write_cmd_hist 命令会将调试器命令窗口的整个历史记录写入文件。

.write_cmd_hist Filename

157. .writemem(Write Memory to File)( 将内存写入文件)

.writemem 命令将内存的一部分写入文件。

.writemem FileName Range

158. .wtitle(Set Window Title)( 设置窗口标题)

    .wtitle 命令设置 WinDbg 主窗口或 NTSD、CDB 或 KD 窗口中的标题。

.wtitle Title

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值