Debugging Tools for Windows

附加到运行中的进程(用户模式)

如果用户模式应用程序已经在运行了,调试器可以附加到这个进程并调试它。通常需要用操作系统指派的称为进程ID(PID)的十进制数字来指定这个程序。

也可以通过包含文件扩展名在内的完整名字来指定进程。但是,如果两个进程有相同的名字时,必须使用进程ID。 (关于如何找到进程ID和进程名,查看获得进程ID)。

下节描述了几种附加到进程的方法。

CDB命令提示符

在CDB命令提示符附加到运行中的进程,以如下语法使用-p选项和进程ID。

cdb -p ProcessID 

或者使用下面的语法通过进程名附加

cdb -pn ProcessName 

还有一些其它有用的命令行选项。例如,可以使用-psn选项来指定要调试的进程所包含的服务名。关于命令行语法的更多信息,查看CDB命令行选项

WinDbg 命令提示符

通过WinDbg命令提示符附加到运行中的进程,按如下语法指定-p选项和进程ID。

windbg -p ProcessID 

或者按下面的语法通过进程名附加。

windbg -pn ProcessName 

还有一些其它有用的命令行选项。例如,可以使用-psn选项来指定要调试的进程所包含的服务名。关于命令行语法的更多信息,查看WinDbg 命令行选项

WinDbg 菜单

当WinDbg在静止模式时,可以通过在File菜单中选择Attach to a Process或者按F6来附加到运行中的进程。

Attach to Process 对话框出现时,选择包含想调试的进程ID和名字的一行,(也可以在Process ID 文本框中输入进程ID。)然后点击OK

调试器命令窗口

如果调试器已经打开,可以在调试器命令窗口使用 .attach (Attach to Process)命令来附加到运行中的进程。

如果CDB是静止的或者已经在调试一个或多个进程,也可以使用.attach命令。如果WinDbg是静止的,则不能使用该命令。

调试器总是同时启动多个目标,除非它们的一些线程被冻结或暂停。

如果.attach 命令成功,调试器会在下一次执行命令的时候附加到指定进程。如果在一行中使用了这个命令多次,则每一条.attach命令都需要执行一次其他命令。

非侵入式调试

如果想调试运行中的程序,并且只对它的执行造成最小的影响,可以非侵入式(noninvasively)调试该进程。

开始调试会话

关于如何开始调试会话的更多信息,查看调试器配置符号 调试器操作(常规)调试器操作(用户模式)

调试器创建的进程行为和通常条件下不同。更多关于这些种类进程的信息,查看被创建进程的行为

在Microsoft Windows XP和之后的Windows系统中,如果调试器停止相应或者冻结了,可以将一个新的调试器附加到目标进程上。关于如何在这种情况下附加调试器的更多信息,查看重新附加目标进程

Build machine: CAPEBUILD