1.exe 没有给我足够的时间来启动 IDE 并将 1.exe 附加到调试器以闯入。
6 回答
在这种情况下,我建议采用与 NT 服务相同的方法。它们也会启动,但通常不会给您足够的时间来为启动例程附加调试器。
此处描述了详细信息:http: //www.debuginfo.com/articles/debugstartup.html
简而言之,您为第二个 exe 添加了一个注册表项:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\2.exe 调试器 = "c:\progs\msvs\common7\ide\devenv.exe /debugexe" (REG_SZ)
更改 c:\progrs\msms\ 以匹配您的设置。
希望有帮助。
如果您愿意考虑使用 Visual Studio 以外的调试器,WinDBG可以自动调试子进程(仅限本机代码)。
你没有提到你使用的是什么语言。但是,如果您使用 C# 或 VB.NET,您可以添加 Debug.Break() 或 Stop 来触发将调试器附加到进程的提示。
或者如上所述,只需使用 Console.Readline() 或 MessageBox.Show() 之类的东西来暂停进程的启动,直到您可以将调试器附加到它。
我假设你有 1.exe 的源代码(如果你正在调试它),然后只需在开头附近插入一个语句,这将导致它挂起足够长的时间来附加调试器。( getch() 如果你很绝望并且它不是交互式的。)
附加后,只需跳到下一条语句并放开它。
您可以为调试构建放入一些预处理器命令 - 只需记住在发布模式下构建您的发行版:
#ifdef DEBUG
Thread.Sleep(10000);
#endif
1.exe是如何启动的?如果可以使用 CreateProcess() 启动它,则可以在挂起状态下启动进程,附加调试器,然后释放新进程。