如何调试由其他可执行文件启动的进程!

Posted yilang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何调试由其他可执行文件启动的进程!相关的知识,希望对你有一定的参考价值。

问题是,我们要调试由其他应用程序运行的应用程序的启动代码!例如,我将打开一个控制台(cmd.exe),然后打开calc.exe,我想调试初始的calc.exe代码。。
Windbg已经解决了这个问题!当您选择“打开可执行文件”时,您有一个小的复选框,上面写着“同时调试子进程”,它实际上确保所有由父EXE生成的进程(您在这个对话框中选择了它!)也由调试器附加。

技术图片

 

如果您对命令行选项感兴趣,可以使用“-o”选项。

技术图片

 

只有在使用“|”命令时才会出现这种情况(至少在用户模式下)!因为当我们附加到任何子进程时,它会在windbg命令行的剩余空间中显示正在调试的当前进程,如下所示!

技术图片

 

如果您执行命令|您将能够看到列表中所有可以调试的进程(一次只能调试一个进程!)。您将得到与下面所示类似的输出。

技术图片

 

我们还可以使用|<number>s命令在不同进程之间移动。例如,在上面的例子中,如果我们想回到debug cmd.exe,我们必须给出命令| 0s。
注意:只有在打开(生成)父可执行文件时,此操作才有效“附加到进程”没有调试所有子进程的选项!

以上是关于如何调试由其他可执行文件启动的进程!的主要内容,如果未能解决你的问题,请参考以下文章

main函数由哪个进程创建?

在 Visual C++ 2003 中附加到外部可执行文件

在 Visual Studio 中调试由可执行文件调用的 C++ 文件

是否可以调试由没有 gdb 标志编译的可执行文件生成的核心文件?

通过批处理文件启动的调试软件(x64dbg)

关闭并重新启动可执行文件后,无法修改或删除由我的 .jar 可执行文件创建的文本文件