有没有办法在暂停状态下启动进程?

时间:2009-06-08 07:04:23

标签: windows debugging windows-xp

我想在暂停状态下启动进程。有没有办法只使用Windows XP附带的标准工具?有没有轻量级的第三方工具?

我正试图解决的问题:
我有一个应用程序,我想使用Visual Studio 2005调试它。我有必要的* .pdb文件的调试版本,我有从这些* .pdb文件引用的所有源。我不想创建一个空的解决方案,它将为我运行该应用程序,所以我试图在从其他地方启动后附加到此过程。我想要调试的代码的一部分是在进程启动开始时执行的,所以我想以挂起模式运行它,附加调试器然后恢复它。

4 个答案:

答案 0 :(得分:9)

我不确定你要从你的问题做什么,但也许使用XP附带的ntsd调试器将帮助你做你想要的(默认情况下,ntsd将加载进程并停止在第一条指令)。


根据您问题中的更新信息,我建议从Microsoft下载Debugging Tools for Windows package并在WinDbg中调试启动内容 - 这是Visual Studio更擅长的一些内容,但也有一些事情可以WinDbg比Visual Studio更好(WinDBg是一个非常强大的调试器)。

或者您只需从命令行在Visual Studio调试器(无解决方案)中加载程序即可:

devenv /debugexe yourprog.exe <arguments>

答案 1 :(得分:8)

您可以轻松编写将为您执行此操作的应用程序。使用CreateProcess()函数,在dwCreationFlags参数中设置CREATE_SUSPENDED标志。

对于您的特定任务,应用程序可以执行以下操作:调用CreateProcess()以启动应用程序并检查错误代码,然后调用MessageBox()告诉您附加调试器,然后在按下按钮之后消息框(MessageBox()返回)调用ResumeThread()来恢复应用程序。

答案 2 :(得分:4)

我一直在问自己同样的问题一段时间了,刚才发现这个非常简洁的小工具将完全符合你(和我)的要求。您也可以只获取二进制文件或源代码。

http://www.codeproject.com/Articles/230005/Launch-a-process-suspended

答案 3 :(得分:1)

关于轻量级第三方工具:

SysInternals Process Explorer:
http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

...允许您暂停和恢复进程。它无法“启动”它们暂停,但无论如何可能对您的目的有用。这是一个免费下载。