Debugging Tools for Windows

调试多个目标

可以同时调试多个dump文件或者活动的用户模式程序。每个目标可以包含一个或多个进程,每个进程可以包含一个或多个线程。

这些目标也被分组进系统中。将一组目标分组成系统来便于区分和操纵。系统的定义如下:

当前正在进行调试的系统称为当前系统或活动系统。

获得多个目标

第一个调试目标通过通常的方式获得。

要调试更多的活动用户模式程序,可以使用.attach (Attach to Process).create (Create Process)命令,然后是g (Go)命令。

使用.opendump (Open Dump File)来调试更多的dump文件,后跟g (Go) 命令。当调试器启动之后也可以打开多个dump文件。在该命令后使用多个-z 开关,每个后接一个不同的文件名来调试多个dump文件。

也可以使用上面的命令来调试另一个系统中的进程。必须在每个系统上都打开一个进程服务器,然后对.attach .create 命令加上-premote 参数来指定需要的进程服务器。如果再使用.attach.create 命令并且不指定-premote参数,调试器在当前系统附加或创建一个进程。

操纵系统和目标

当调试开始时,当前系统是调试器最近附加到的系统。如果发生异常,当前系统会切换到发生异常的那个系统。

使用.kill (Kill Process) 命令来关闭一个目标并继续调试其他目标。在Microsoft Windows XP和之后版本的Windows中,也可以使用 .detach (Detach from Process)命令或WinDbg的Debug | Detach Debuggee 菜单命令。这些命令停止对目标的附加,但是会让目标继续运行。

使用下面一些方法来控制多个系统的调试:

使用这些命令来选择当前系统并使用标准命令来选择当前进程和线程,可以决定显示内存和寄存器的命令的上下文。

但是,不能将这些进程分开执行。g (Go)命令总是使得所有目标一起开始执行。

注意 建议不要同时调试活动目标和dump目标,因为对于每种调试类型命令的行为不一样。例如,当当前系统是一个dump文件时使用g (Go)命令,调试器可以开始执行,但是不能中断到调试器,因为调试dump文件时不能识别中断命令。

Build machine: CAPEBUILD