问题是,我们要调试由其他应用程序运行的应用程序的启动代码!例如,我将打开一个控制台(cmd.exe),然后打开calc.exe,我想调试初始的calc.exe代码。。
Windbg已经解决了这个问题!当您选择“打开可执行文件”时,您有一个小的复选框,上面写着“同时调试子进程”,它实际上确保所有由父EXE生成的进程(您在这个对话框中选择了它!)也由调试器附加。
如果您对命令行选项感兴趣,可以使用“-o”选项。
只有在使用“|”命令时才会出现这种情况(至少在用户模式下)!因为当我们附加到任何子进程时,它会在windbg命令行的剩余空间中显示正在调试的当前进程,如下所示!
如果您执行命令|您将能够看到列表中所有可以调试的进程(一次只能调试一个进程!)。您将得到与下面所示类似的输出。
我们还可以使用|<number>s命令在不同进程之间移动。例如,在上面的例子中,如果我们想回到debug cmd.exe,我们必须给出命令| 0s。
注意:只有在打开(生成)父可执行文件时,此操作才有效“附加到进程”没有调试所有子进程的选项!