.attach(附加到进程)

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

.attach [-premote RemoteOptions] AttachOptions PID

参数

RemoteOptions
指定要附加到的进程服务器。 这些选项与命令行 -premote 选项的选项 相同。 有关 语法详细信息,请参阅激活 智能客户端。

AttachOptions
指定如何执行附加。 这可能包括以下任一选项:

-b
防止调试器在附加到目标进程时请求初始中断。 如果应用程序已挂起,或者想要避免在目标中创建中断线程,这非常有用。

-e
允许调试器附加到已在调试的进程。 有关详细信息 ,请参阅重新附加到目标 应用程序。

-k
开始本地内核调试会话。 有关详细信息 ,请参阅执行本地内核 调试。

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

-r

使调试器在附加到目标进程时启动运行的目标进程。 如果应用程序已挂起,并且希望它恢复执行,则这非常有用。

-v
使指定的进程无法进行调试。

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

环境

模式

仅用户模式

目标

仅实时调试

平台

all

备注

当 CDB 休眠时,或者如果已在调试一个或多个进程,可以使用此命令。 WinDbg 休眠时无法使用它。

如果此命令成功,则调试器将在下一次调试器执行命令时附加到指定的进程。 如果一行中多次使用此命令,则执行请求次数与使用此命令时次数一样。

由于在非中断调试期间不允许执行,因此调试器一次无法以非中断方式调试多个进程。 这也意味着,使用 .attach -v 命令可能会降低现有入侵调试会话的用处。

多个目标进程将始终一起执行,除非其某些线程被冻结或挂起。

如果要附加到新进程并冻结所有现有目标,请使用 -f 选项。 例如,你可能正在调试客户端应用程序中的崩溃,并且想要附加到服务器进程,而无需让客户端应用程序继续运行。

如果使用 -premote 选项,则新进程将成为新系统的一部分。 有关详细信息,请参阅 调试多个目标