3

1.exe 没有给我足够的时间来启动 IDE 并将 1.exe 附加到调试器以闯入。

4

6 回答 6

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\ 以匹配您的设置。

希望有帮助。

于 2008-09-16T19:07:34.053 回答
0

如果您愿意考虑使用 Visual Studio 以外的调试器,WinDBG可以自动调试子进程(仅限本机代码)。

于 2008-09-16T19:12:57.533 回答
0

你没有提到你使用的是什么语言。但是,如果您使用 C# 或 VB.NET,您可以添加 Debug.Break() 或 Stop 来触发将调试器附加到进程的提示。

或者如上所述,只需使用 Console.Readline() 或 MessageBox.Show() 之类的东西来暂停进程的启动,直到您可以将调试器附加到它。

于 2008-09-16T20:07:34.923 回答
0

我假设你有 1.exe 的源代码(如果你正在调试它),然后只需在开头附近插入一个语句,这将导致它挂起足够长的时间来附加调试器。( getch() 如果你很绝望并且它不是交互式的。)

附加后,只需跳到下一条语句并放开它。

于 2008-09-16T19:05:53.667 回答
0

您可以为调试构建放入一些预处理器命令 - 只需记住在发布模式下构建您的发行版:

#ifdef DEBUG
Thread.Sleep(10000);
#endif
于 2008-09-16T19:06:12.433 回答
0

1.exe是如何启动的?如果可以使用 CreateProcess() 启动它,则可以在挂起状态下启动进程,附加调试器,然后释放新进程。

于 2008-09-16T19:10:23.297 回答