【问题标题】:Can I spawn processes attached to a running debugger?我可以生成附加到正在运行的调试器的进程吗?
【发布时间】:2011-04-28 13:58:44
【问题描述】:

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

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

   WaitForEventFrom( p1 );
}

是否可以检测“main”是否附加到调试器,并自动将该调试器附加到客户端进程

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

(注意:我在 Windows 上,使用 VS2010。但任何(体面的)调试器都可以)

【问题讨论】:

    标签: c++ windows visual-studio debugging


    【解决方案1】:

    您可以使用 IsDebuggerPresent() 来了解 main() 是否正在调试。

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

    我能想象的最好的结果是产生一个新的 vs 实例,试图将它附加到客户端进程。生成 windbg 并将其附加到 ClientProcess 可能会更容易,因为那里有对 pid 等的命令行支持。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-19
      • 2012-01-15
      • 2014-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-18
      相关资源
      最近更新 更多