.attach(附加到进程)
.attach 命令附加到新的目标应用程序。
.attach [-premote RemoteOptions] AttachOptions PID
参数
RemoteOptions
指定要附加到的进程服务器。 这些选项与命令行 -premote 选项的选项相同。 有关语法详细信息,请参阅激活智能客户端。
AttachOptions
指定如何完成附加。 这可包括下列任一选项:
-b
防止调试器在附加到目标进程时请求初始进入。 如果应用程序已挂起,或者想要避免在目标中创建进入线程,这非常有用。
-e
允许调试器附加到已在调试的进程。 有关详细信息,请参阅重新附加到目标应用程序。
-k
开始本地内核调试会话。 有关详细信息,请参阅执行本地内核调试。
-f
冻结所有目标应用程序中的所有线程,但在要附加到的新目标中除外。 这些线程将保持冻结状态,直到新附加的进程中发生异常。 请注意,初始断点限定为异常。 使用 ~u(解冻线程)命令可以解冻各个线程。
-r
促使调试器在附加到目标进程时开始运行目标进程。 如果应用程序已挂起,并且希望应用程序恢复执行,这非常有用。
-v
促使非侵入性地调试指定的进程。
PID
指定新目标应用程序的进程 ID。
环境
项 | 说明 |
---|---|
模式 | 仅限用户模式 |
目标 | 仅限实时调试 |
平台 | 全部 |
注解
当 CDB 处于休眠状态或已在调试一个或多个进程时,可以使用此命令。 当 WinDbg 处于休眠状态时,不能使用此命令。
如果此命令成功,调试器将在下次调试器发出执行命令时附加到指定的进程。 如果连续使用此命令多次,则必须请求执行的次数与使用此命令的次数相同。
由于在非侵入性调试期间不允许执行,因此调试器一次无法以非侵入方式调试多个进程。 这也意味着使用 .attach -v 命令可能会使得已存在的入侵调试会话不太有用。
除非一些目标进程的线程被冻结或挂起,否则将始终一起执行多个目标进程。
如果要附加到新进程并冻结所有现有目标,请使用 -f 选项。 例如,可能在客户端应用程序中调试崩溃,并且想要附加到服务器进程,而无需让客户端应用程序继续运行。
如果使用 -premote 选项,则新进程将成为新系统的一部分。 有关详细信息,请参阅调试多个目标。