windbg命令行选项

我们不仅可以通过GUI的方式使用Windbg,还可以通过命令行的方式使用它,且在有些需求和使用场景下,只能使用命令行模式
 windbg命令行使用以下语法:
    windbg [ -server ServerTransport | -remote ClientTransport ] [-lsrcpath ]
   [ -premote SmartClientTransport ] [-?] [-ee {masm|c++}] 
   [-clines lines] [-b] [-d] [-aExtension] [-e Event] 
   [-failinc] [-g] [-G] [-hd] [-j] [-n] [-noshell] [-o] 
   [-Q | -QY] [-QS | -QSY] [-robp] [-secure] [-ses] [-sdce] 
   [-sicv] [-sins] [-snc] [-snul] [-sup] [-sflags 0xNumber] 
   [-T Title] [-v] [-log{o|a} LogFile] [-noinh] 
   [-i ImagePath] [-y SymbolPath] [-srcpath SourcePath] 
   [-k [ConnectType] | -kl | -kx ExdiOptions] [-c "command"] 
   [-pb] [-pd] [-pe] [-pr] [-pt Seconds] [-pv]
   [-W Workspace] [-WF Filename] [-WX] [-zp PageFile] 
   [ -p PID | -pn Name | -psn ServiceName | -z DumpFile | executable ] 

windbg -I[S] 

windbg -IU KeyString

windbg -IA[S] 
下面是对windbg命令行选项的描述。除了-j之外,所有命令行选项都区分大小写。可以用正斜杠(/)替换初始连字符。

参数:

-server 服务器传输

创建可由其他调试程序访问的调试服务器。使用此参数时,它必须是命令行上的第一个参数。

-remote客户端

创建调试客户端,并连接到已在运行的调试服务器。使用此参数时,它必须是命令行上的第一个参数。

-premote 智能客户端

创建智能客户端,并连接到已在运行的进程服务器。

-a扩展

设置默认扩展dll。默认值为kdextx86.dll或kdexts.dll。“a”后面不能有空格,并且不能包含.dll文件扩展名。

-b
 不再支持此选项。
-c " command "

指定启动时要运行的初始调试器命令。此命令必须用引号括起来。多个命令可以用分号分隔。(如果您有一个长的命令列表,那么将它们放在脚本中,然后将-c选项与$<、$><、$><、$><(运行脚本文件)命令一起使用可能会更容易。)如果要启动调试客户端,则此命令必须用于调试服务器。不允许使用客户端特定的命令,如.lsrcpath。

-clines lines

设置可以在远程调试期间访问的命令历史记录中的命令的近似数目。

-d

(仅限内核模式)重新启动后,加载内核模块后,调试器将立即进入目标计算机。(此中断早于-b选项的中断。)

-e Event

向调试器发出指定事件已发生的信号。此选项仅在以编程方式启动调试器时使用。

-ee {masm|c++}

设置默认表达式计算器。如果指定了MASM,则将使用MASM表达式语法。如果指定C++,则将使用C++表达式语法。如果省略-ee选项,则默认使用masm表达式语法。

-failinc
 使调试器忽略任何可疑符号。调试用户模式或内核模式小型转储文件时,此选项还将阻止调试器加载图像无法映射的任何模块。
-g

(仅限用户模式)忽略目标应用程序中的初始断点。除非设置了另一个断点,否则此选项将导致目标应用程序在启动或windbg附加到目标应用程序之后继续运行。

-G

(仅限用户模式)忽略进程终止时的最终断点。通常,调试会话在映像运行过程中结束。此选项将导致调试会话在子进程终止时立即结束。这与输入命令sxd epr的效果相同。

-hd

(仅限用户模式)忽略进程终止时的最终断点。通常,调试会话在映像运行过程中结束。此选项将导致调试会话在子进程终止时立即结束。这与输入命令sxd epr的效果相同。

-I[S]
将windbg安装为后期调试程序。尝试此操作后,将显示成功或失败消息。如果包含S,则此过程将在成功时自动执行;仅显示失败消息。-I参数不能与任何其他参数一起使用。这个命令实际上不会启动windbg,尽管windbg窗口可能会出现一会儿。
-IA[S]
将windbg与注册表中的文件扩展名.dmp、.mdmp和.wew关联。尝试此操作后,将显示成功或失败消息。如果包含S,则此过程将在成功时自动执行;仅显示失败消息。建立此关联后,双击具有这些扩展名之一的文件将启动windbg。-IA参数不能与任何其他参数一起使用。这个命令实际上不会启动windbg,尽管windbg窗口可能会出现一会儿。
-IU KeyString
将调试器远程处理注册为URL类型,以便用户可以使用URL自动启动调试器远程客户端。keystring的格式为remdbgeng://remotingoption。RemotingOption是一个字符串,它按照激活调试客户机主题中定义的传输协议进行定义。如果此操作成功,则不显示任何消息;如果失败,则显示错误消息。-IU参数不能与任何其他参数一起使用。虽然一个windbg窗口可能会出现一段时间,但此命令实际上不会启动windbg。
-i ImagePath

指定生成错误的可执行文件的位置。如果路径包含空格,则应将其括在引号中。

-j

允许日记。

-k [ConnectType]

(仅限内核模式)启动内核调试会话。如果-k后面没有任何connecttype选项,则它必须是命令行上的最后一个条目。

-kl

(Windows XP及更高版本,仅限内核模式)在与调试器相同的计算机上启动内核调试会话。

-kx ExdiOptions

(仅限内核模式)使用exdi驱动程序启动内核调试会话。此文档中没有描述ExDI驱动程序。如果您的硬件探测器或硬件模拟器具有exdi接口,请与Microsoft联系以获取调试信息。

-log{o|a} LogFile

开始将信息记录到日志文件中。如果指定的日志文件已经存在,那么如果使用-logo,它将被覆盖。如果使用loga,输出将附加到文件中。

-lsrcpath
为远程客户端设置的本地源路径。 此选项必须遵循 -远程命令行上。

-n
干扰符号负载:启用从符号处理程序的详细输出。

-noinh
(仅限用户模式)可以防止创建句柄继承从调试器调试程序的进程。

-noprio
可以防止任何优先级更改。 此参数将阻止 WinDbg 让几个处于活动状态时的 CPU 时间的优先级。

-noshell
禁止所有 .shell命令。 此禁止将持续的时间运行调试器,即使开始新的调试会话。

-o
(仅限用户模式)调试启动目标应用程序 (子进程) 的所有进程。 默认情况下,创建的一个正在调试的进程将运行它们通常要做。

-openPrivateDumpByHandle Handle
指定要调试的崩溃转储文件的句柄。

-p PID
指定要调试的十进制进程 ID。 这用于调试已在运行的进程。

-pb
(仅限用户模式)防止调试器附加到目标进程时请求初始被侵入的情形。 如果应用程序已挂起,或者如果你想要避免在目标中创建被侵入的情形线程,这可以很有用。

-pd
(仅限用户模式)导致目标应用程序不会终止调试会话结束时。 

-pe
(仅限用户模式)指示已在调试目标应用程序。 

-pn Name
指定要调试的进程的名称。 (此名称必须是唯一的。)这用于调试已在运行的进程。

-pr
(仅限用户模式)导致调试器开始运行时它将附加到它的目标进程。 如果应用程序已挂起状态,并且您不希望继续执行,这很有用。

-psn ServiceName
指定要调试的过程中包含的服务的名称。 这用于调试已在运行的进程。

-pt Seconds
指定中断超时,以秒为单位。 默认值为 30。 

-pv
(仅限用户模式)指定调试器应 noninvasively 附加到目标进程。 

-Q
禁止显示"保存工作区?" 对话框中指定选项。 工作区不会自动保存。

-QS
禁止显示"重新加载源"? 对话框中指定选项。 源文件不会自动重新加载。

-QSY
禁止显示"重新加载源"? 对话框中,会自动重新加载源文件。

-QY
禁止显示"保存工作区?" 对话框和自动保存工作区。 

-robp
这允许 CDB 只读内存页上设置断点。 (默认值是此类操作失败。)

-sdce
使调试器显示文件访问错误符号加载过程中的消息。 

-secure
激活安全模式。

-ses
使调试器执行的所有符号文件严格评估,并忽略任何可疑的符号。

-sflags 0 x
一次性设置所有的符号处理程序选项。 应能带有前缀的十六进制数0x -而无需十进制0x允许,则允许而符号选项是二进制的标志,因此建议十六进制。 应谨慎,使用此选项,因为它将替代所有符号处理程序默认值。

-sicv
导致要忽略 CV 记录的符号处理程序。

-sins
会导致调试器忽略符号路径和可执行文件映像路径环境变量。

-snc
使调试器后,若要关闭C++转换。 

-snul
禁用自动符号加载的非限定名称。 

-srcpath SourcePath
指定源文件搜索路径。 用分号分隔多个路径 (;)。 如果路径包含空格,应括在引号中。 

-sup
导致要在每个符号搜索期间搜索公共符号表的符号处理程序。 

-T Title
设置 WinDbg 窗口标题。

-v
启用从调试器的详细输出。

-W Workspace
加载给定的命名工作区。 如果工作区名称包含空格,请将其括在引号中。 如果不存在此名称的任何工作区,将为您提供具有此名称创建新的工作区或放弃加载尝试的选项。 

-WF Filename
从给定的文件加载工作区。 文件名应包括文件和扩展 (通常.wew)。 如果工作区名称包含空格,请将其括在引号中。 如果存在具有此名称没有工作区文件,将为您提供具有此名称创建一个新的工作区文件或放弃加载尝试的选项。 

-WX
禁用自动工作区中加载。

-y SymbolPath
指定符号搜索路径。 用分号分隔多个路径 (;)。 如果路径包含空格,应括在引号中。 

-z DumpFile
指定要调试的崩溃转储文件的名称。 如果路径和文件名称包含空格,这必须用引号括起来。 可以通过包含多个同时打开多个转储文件z选项,每个后跟一个不同DumpFile值。 

-zp PageFile
指定修改的页面文件的名称。 如果您正在调试转储文件,并且想要使用,这很有用 .pagein (内存中的页) 命令。 不能使用 -zp与标准的 Windows 页文件--可以使用仅专门修改页面文件。

executable
指定可执行进程的命令行。 这用于启动新进程,并对其进行调试。 这必须是命令行上的最后一个项目。 可执行文件的名称传递给可执行文件作为其参数字符串后的所有文本。

-?
此 HTML 帮助窗口将弹出。


如果使用了-remote或-server选项,则它必须出现在命令行上的任何其他选项之前。如果指定了可执行文件,它必须出现在命令行的最后;可执行文件名之后的任何文本都将作为其自己的命令行参数传递给可执行程序。

当从命令行运行调试器时,指定目标应用程序后应用程序的文件名称的参数。 例如:

dbgcmd
windbg myexe arg1 arg2

 

 

 

 

 

 

posted on 2019-08-23 10:01  活着的虫子  阅读(1519)  评论(0编辑  收藏  举报

导航