我可以生成附加到正在运行的调试器的进程吗?

Can I spawn processes attached to a running debugger?

本文关键字:运行 调试器 进程 我可以      更新时间:2023-10-16

假设我有一个程序生成一些进程(伪代码)

main() {
   p1 = Spawn( "ClientProcess" );
   WaitForEventFrom( p1 );
}

是否有可能检测'main'是否附加到调试器,并自动将该调试器附加到客户端进程?

附加问题:不改变源代码/可执行文件就能做到吗?

(注意:我在windows上,使用VS2010。但是任何(像样的)调试器都可以

可以使用IsDebuggerPresent()来判断main()是否正在调试

但是,你不能将VS调试器重定向到从已调试的进程中取消附加或重新附加到派生进程。

我能想象的最好的是生成一个新的vs实例,试图将它附加到clientprocess。生成windbg并将其附加到ClientProcess可能会更容易,因为命令行支持pid等。

如果应用程序正在远程调试(CheckRemoteDebuggerPresent()返回true),这显然也不起作用,因为你需要从远程系统启动和附加。问题太多了…