NetRoc's Blog

N-Tech

 

WinDbg 文档翻译----63

cc682/NetRoc

http://netroc682.spaces.live.com/

.ignore_missing_pages (Suppress Missing Page Errors)

.ignore_missing_pages 命令禁止当内核内存转储出现缺页时显示错误信息。

语法

.ignore_missing_pages {1|0
.ignore_missing_pages 

环境

模式

仅内核模式

目标

仅dump文件调试

平台

所有

 

注释

.ignore_missing_pages 1 命令使得在调试内核内存转储时禁止缺页错误信息。.ignore_missing_pages 0 则会显示这些命令。默认情况下调试器会显示错误信息。

如果不带参数,.ignore_missing_pages 显示当前的设置。

附加信息

关于如何调试这些Dump文件的更多信息,查看内核模式Dump

.imgscan (Find Image Headers)

.imgscan 命令在虚拟内存中查找映像头。

语法

.imgscan [Options

参数

Options

任意下面的选项:

/r Range

指定要搜索的范围。该语法的更多信息,查看地址和地址区域语法。如果仅指定一个地址,则调试器搜索从该位置开始的0x10000字节范围。

/l

为任何已找到的映像头加载模块信息。

/v

显示详细信息。

环境

模式

用户模式、内核模式

目标

活动目标、崩溃转储

平台

所有

注释

如果不使用/r参数,调试器会搜索所有虚拟内存区域。

.imgscan 命令显示找到的任何映像头和头类型。映像头类型包括可移植映像文件头(PE)和Microsoft MS-DOS MZ头。

下面是.imgscan命令的示例。

0:000> .imgscan
MZ at 00400000, prot 00000002, type 01000000 - size 2d000
MZ at 77f80000, prot 00000002, type 01000000 - size 7d000
  Name: ntdll.dll
MZ at 7c570000, prot 00000002, type 01000000 - size b8000
  Name: KERNEL32.dll

.kdfiles (Set Driver Replacement Map)

.kdfiles 命令读取一个文件并将它的内容作为驱动替换映射。

语法

.kdfiles MapFile 
.kdfiles -m OldDriver NewDriver
.kdfiles -s SaveFile 
.kdfiles -c 
.kdfiles 

参数

MapFile

指定要读取的驱动替换映射文件。

-m

在当前关联列表(association list)中添加驱动替换关联。

OldDriver

指定目标机上的旧驱动的路径和文件名。OldDriver和语法和驱动替换文件中map之后的第一行相同。该语法的更多信息,查看映射驱动文件

NewDriver

指定新驱动的路径和文件名。该驱动可以在主控机上或者其他的网络路径中。NewDriver 的语法和驱动替换文件中map之后的第二行相同。该语法的更多信息,查看映射驱动文件

-s

创建一个文件并将当前的驱动替换连接写入进去。

SaveFile

指定要创建的文件名。

-c

删除已存在的驱动替换映射。 (该选项并不改变映射文件本身,而是清除调试器的当前映射设置。)

环境

可以在Microsoft Windows XP和之后版本的Windows中使用.kdfiles 命令。如果在之前的Windows中使用,命令不会产生错误但是也不会有任何作用。

模式

仅内核模式

目标

仅活动调试

平台

仅x86和Itanium处理器

注释

如果不带参数使用 .kdfiles ,调试器显示当前的驱动替换映射文件的路径和名字以及当前的替换关联的集合。

运行该命令时,会读取指定的MapFile文件。如果找不到文件或者没有包含适当格式的文本,调试器会显示一个状态信息"Unable to load file associations"。

如果指定文件是以正确的驱动替换映射文件格式的,调试器加载该文件并将它们作为驱动替换映射。该映射一直保持到退出调试器或者执行了另一个.kdfiles 命令为止。

读取该文件后,后来对它的改变不会作用于驱动替换映射。 (除非改变之后再次使用.kdfiles 命令)。

需求

版本: 在Windows XP之后的Windows操作系统中支持。

附加信息

驱动替换和其他内核模块的示例、驱动替换映射文件格式的说明,以及使用该功能的限制,查看映射驱动文件

.kframes (Set Stack Length)

.kframes 命令设置堆栈回溯显示的默认长度。

语法

.kframes FrameCountDefault 

参数

FrameCountDefault

指定当使用堆栈回溯命令时要显示的堆栈帧个数。

环境

模式

用户模式、内核模式

目标

活动目标、崩溃转储

平台

所有

注释

可以使用.kframes 命令来 设置堆栈回溯显示的默认长度。该长度会控制kkbkpkPkv命令显示的帧个数,以及kd命令显示的 DWORD_PTR个数。

可以在这些命令中使用FrameCountWordCount 参数来覆盖默认长度。

如果没有执行过.kframes 命令,默认数量为20 (0x14)。

参见

k, kb, kd, kp, kP, kv (Display Stack Backtrace)

.kill (Kill Process)

用户模式下.kill 命令结束调试会话并关闭目标程序。

内核模式下.kill 命令结束目标机上的一个进程。

语法

用户模式

.kill 

内核模式

.kill Process 

参数

Process

指定要结束的进程的地址。如果省略Process或者指定为0,调试器结束当前系统状态下的默认进程。

环境

内核模式下,该命令仅在Microsoft Windows Server 2003和之后版本的Windows中支持。

模式

用户模式、内核模式

目标

仅活动调试

平台

所有

注释

用户模式下,.kill命令结束调试会话、关闭目标程序并且将调试器返回到静止模式。

内核模式下,该命令为了终止选定进程,会在目标机上调度它。下一次目标可以运行时(例如使用g (Go) 命令),指定进程就会结束。

本地内核调试时不能使用该命令。

需求

版本: (内核模式) 在Windows Server 2003和之后的系统中支持。

附加信息

关于如何结束用户模式目标或者停止附加的更多信息,查看结束调试会话

.lastevent (Display Last Event)

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

语法

.lastevent 

环境

模式

用户模式、内核模式

目标

活动目标、崩溃转储

平台

所有

注释

中断到调试器总是会产生一个异常。当调试器能够接受输入时总是存在一个最近事件(last event)的。如果使用CTRL+CCTRL+BREAKDebug | Break中断到调试器,总是会产生一个of 0x80000003异常代码。

附加信息

关于异常和事件的更多信息,查看控制异常和事件

.lines (Toggle Source Line Support)

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

语法

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

参数

-e

启用源码行支持。

-d

禁用源码行支持。

-t

打开或关闭源码行支持。如果.lines没有指定参数,.lines 命令的默认行为就是在是否支持源码行之间切换。

环境

模式

用户模式、内核模式

目标

活动目标、崩溃转储

平台

所有

注释

进行源码调试前必须先启用源码行支持。这种支持使得调试器加载源码行符号。

可以通过.lines 命令或-lines 命令行选项启用源码行支持。如果已经打开了源码行支持,可以使用.lines 命令来禁用。

默认情况下,如果不使用.lines 命令,WinDbg打开源码行支持,而命令行调试器 (KD、CDB、 NTSD) 是关闭的。关于如何改变该设置的更多信息,查看设置符号选项

附加信息

源码调试以及相关命令的更多信息,查看源码模式调试

.load, .loadby (Load Extension DLL)

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

语法

.load DLLName 
!DLLName.load 
.loadby DLLName ModuleName 

参数

DLLName

指定要加载的调试器扩展DLL。如果使用.load 命令,DLLName 需要包含完整路径。如果使用.loadby 命令,DLLName 应该只包含文件名。

ModuleName

指定位于DLLName 指定的扩展DLL相同目录下的模块的模块名。

环境

模式

用户模式、内核模式

目标

活动目标、崩溃转储

平台

所有

注释

使用.load命令时必须指定全路径。

使用.loadby 命令时不需要指定路径。调试器会找到ModuleName 参数指定的模块,然后使用它的路径来加载扩展DLL。如果调试器找不到该模块或者找不到扩展DLL,会收到一条提示这个问题的错误信息。指定的模块和扩展DLL之间不需要任何关系。使用.loadby 命令是可以避免输入很长的路径的简便方法。

.load .loadby 命令完成后,就可以访问该扩展中的命令了。

要加载一个扩展DLL,可以使用下面的方法之一:

  • 使用 .load.loadby 命令。
  • 使用完整的!DLLName.ExtensionCommand 语法。如果调试器还没有加载DLLName.dll,则会在这个时候加载。

附加信息

关于如何加载、卸载和控制扩展的更多信息,查看加载调试器扩展DLL

.locale (Set Locale)

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

语法

.locale [Locale

参数

Locale

指定需要的区域设置。如果省略该参数,调试器显示当前区域设置。

环境

模式

用户模式、内核模式

目标

活动目标、崩溃转储

平台

所有

注释

区域化设置控制Unicode字符串如何显示

下面是.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

附加信息

关于区域设置的更多信息,查看MSDN Library中的setlocale函数。

.logappend (Append Log File)

.logappend 命令将调试器命令窗口中的事件和命令添加到指定的日志文件末尾。

语法

.logappend [/u] [FileName

参数

/u

以Unicode格式写入日志文件。如果省略该参数,调试器以ASCII (ANSI) 格式写入日志。

注意  如果添加到已存在的日志文件末尾,只有当该文件是使用/u 选项创建时才能使用/u 参数。否则日志文件中会同时包含ASCII和Unicode字符,造成阅读困难。

FileName

指定日志文件名。可以是全路径或者仅仅是文件名如果文件名包含空格,将FileName 用引号括起来。如果没有指定路径,调试器使用当前目录。如果省略FileName,调试器使用Dbgeng.log 作为名字。

环境

模式

用户模式、内核模式

目标

活动目标、崩溃转储

平台

所有

注释

如果运行.logappend 命令时已经打开了日志文件,调试器会关闭它。如果指定已存在的文件,调试器会将新的信息添加到末尾。如果文件不存在,调试器会创建它。

附加信息

关于其他作用于日志文件的命令的更多信息,查看记录日志文件

.logclose (Close Log File)

.logclose 命令关闭任何已打开的日志文件。

语法

.logclose 

环境

模式

用户模式、内核模式

目标

活动目标、崩溃转储

平台

所有

附加信息

关于其他作用于日志文件的命令的更多信息,查看记录日志文件

.logfile (Display Log File Status)

.logfile命令查看日志文件是否存在并显示文件状态。

语法

.logfile 

环境

模式

用户模式、内核模式

目标

活动目标、崩溃转储

平台

所有

附加信息

关于其他作用于日志文件的命令的更多信息,查看记录日志文件

.logopen (Open Log File)

.logopen 命令将调试器命令窗口 中的事件和命令写入一个新的日志文件。

语法

.logopen [Options] [FileName
.logopen /d 

参数

Options

任意下面的选项:

/t

在日志文件名中添加进程ID、当前日期和时间。这些信息会插入到文件名后,扩展名之前。

/u

以Unicode形式写入日志文件。如果省略该选项,调试器以ASCII (ANSI)格式记录日志。

FileName

指定日志文件名。可以是全路径或者仅仅是文件名如果文件名包含空格,将FileName 用引号括起来。如果没有指定路径,调试器使用当前目录。如果省略FileName,调试器使用Dbgeng.log 作为名字。

/d

基于目标进程的名字或目标机和状态莱自动生成文件名。该文件总是使用.log 扩展名。

环境

模式

用户模式、内核模式

目标

活动目标、崩溃转储

平台

所有

注释

如果运行.logopen 命令时已经打开了日志文件,调试器会关闭它。如果指定已存在的文件,它的内容会被覆盖。

.logopen /t 命令在日志文件名中加入进程ID、日期和时间。下面例子中,进程ID的16进制是0x02BC、日期是February 28, 2005、时间是9:05:50.935。

0:000> .logopen /t c:\logs\mylogfile.txt
Opened log file 'c:\logs\mylogfile_02BC_2005-02-28_09-05-50-935.txt'

附加信息

关于其他作用于日志文件的命令的更多信息,查看记录日志文件

posted on 2008-06-30 11:23 NetRoc 阅读(623) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。

导航

统计

常用链接

留言簿(7)

随笔档案(99)

文章分类(35)

文章档案(32)

Friends

Mirror

搜索

最新评论

阅读排行榜

评论排行榜