基本上我有主机和子程序。我没有 child 的资料来源,因此我无法更改任何内容。我想从调试器启动Host,在某个时候应该启动子程序。我也想自动附加Child来调试 session (因此,在Child进程下加载的DLL源中设置的任何断点都会命中)。

如何在带有标准WinAPI的Visual Studio 2008 C++中执行此操作?

我尝试了这个:

SHELLEXECUTEINFO sei = {0};

sei.cbSize = sizeof (SHELLEXECUTEINFO);
sei.fMask  = SEE_MASK_NOCLOSEPROCESS;
sei.lpVerb = "open";
sei.lpFile = "Child.exe";
sei.lpParameters = "/Param";
sei.nShow  = SW_SHOWNORMAL;

if (ShellExecuteEx (&sei))
{
    WaitForSingleObject (sei.hProcess, INFINITE);
}

但这不为Child.exe附加调试器

最佳答案

您可以使用gflags.exe程序。这可以从VS命令提示符下访问。您可以指定在启动子程序时启动的调试器。通过在vsjitdebugger.exe中将gflags.exe指定为调试器,可以选择当前正在运行的VS实例作为调试器。

编辑:

对不起,我感到困惑。 Gflags在Visual Studio中不是默认设置。您将需要Debugging Tools for Windows。但是,如果您要做的只是为特定图像设置默认调试器,则可以使用IFEO,无论如何gflags.exe都会这样做:)

10-04 14:15