.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 选项,则新进程将成为新系统的一部分。 有关详细信息,请参阅 调试多个目标。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈