2011-04-28 63 views
2

想象我有派生一些处理的程序(伪码)我可以产生附加到正在运行的调试器的进程吗?

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

    WaitForEventFrom(p1); 
} 

是否可以检测如果“主”附连到调试器,和自动附加该调试器客户机处理

奖金问题:可以在不更改源代码/可执行文件的情况下完成吗?

(注:我在Windows下使用VS2010但任何(正派)调试器会做)

回答

1

可以使用的IsDebuggerPresent()知道,如果主()正在调试。

但是,您不能重定向VS调试器以解除附加并重新附加到调试过程中衍生的进程。

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

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

相关问题