基本上我有主机和子程序。我没有 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
都会这样做:)