.attach(附加到进程)

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

.attach [-premote RemoteOptions] AttachOptions PID

参数

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

AttachOptions
指定附加操作的完成方式。 这可以包括以下任一选项:

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

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

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

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

-R

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

-V
导致以非侵入方式调试指定的进程。

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

环境

说明
模式 仅限用户模式
目标 仅实时调试
平台 all

注解

当 CDB 处于休眠状态时,或者如果它已在调试一个或多个进程,则可以使用此命令。 当 WinDbg 处于休眠状态时,不能使用它。

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

由于在非侵入性调试期间不允许执行,因此调试器不能一次非侵入性地调试多个进程。 这也意味着使用 .attach -v 命令可能会使已经存在的侵入性调试会话变得不那么有用。

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

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

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