2009-06-08 87 views
7

我要启动处于暂停状态的过程。有没有办法通过仅使用Windows XP附带的标准工具来实现这一点?有没有轻量级的第三方工具?有没有办法在暂停状态下启动进程?

问题我正在尝试解决:
我有一个应用程序,我想通过使用Visual Studio 2005进行调试。我有必要的* .pdb文件进行调试构建,并且我拥有从这些*引用的所有源。 pdb文件。我不想创建一个为我运行该应用程序的空白解决方案,因此我试图在从其他位置启动后重视此过程。我想调试的代码的一部分是在进程启动的时候执行的,所以我想在挂起模式下运行它,附加一个调试器然后恢复它。

+0

我写了一个工具,它允许这样做:载荷大小://github.com/burlachenkok/process_tool(有些strnge家伙 - 马丁克莱顿,McCygnus,维加,斯蒂芬Leppik删除我的帖子) – bruziuz 2017-10-19 21:37:58

回答

8

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


从你的问题的最新信息,我建议下载微软的Debugging Tools for Windows package和调试在WinDbg中启动的东西-the一些事情,Visual Studio是在好转,但也有一些事情, WinDbg比Visual Studio更好(WinDBg是一个非常强大的调试器)。

或者你可以简单地在Visual Studio调试器(无解)在命令行中加载程序:

devenv /debugexe yourprog.exe <arguments> 
+0

我想指出的是,在该示例中,您与yourprog.exe位于同一文件夹中。这很重要,因为[工作目录](https://en.wikipedia.org/wiki/Working_directory)将被设置为当前目录。这是大多数应用程序所期望的,因为这是默认情况下Explorer所做的。如果你使用exe的完整路径,并且你站在不同的路径(比如c:\),那么你需要等待VS启动,然后右键单击解决方案中的exe,选择属性并设置那里的工作目录。您也可以在那里设置命令行参数。 – nohwnd 2016-11-15 09:28:04

7

您可以轻松地编写一个应用程序,将做到这一点你。使用CreateProcess()函数,在dwCreationFlags参数中设置CREATE_SUSPENDED标志。

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

+0

我知道我可以,但我认为使用标准工具(如果有的话)会更好。 – okutane 2009-06-08 07:21:05

+0

我写了一个工具,它允许这样做:载荷大小://github.com/burlachenkok/process_tool(有些strnge家伙 - 马丁克莱顿,McCygnus,维加,斯蒂芬Leppik删除我的帖子) – bruziuz 2017-10-19 21:38:38

相关问题