【发布时间】:2017-06-22 19:41:49
【问题描述】:
我有两个 C# 项目,一个正在尝试将另一个作为进程运行。主项目像这样启动另一个进程:
ProcessStartInfo info = new ProcessStartInfo(filepath, args);
info.Verb = "runas";
info.UseShellExecute = true;
if (file.Exists(filepath))
{
_fileID = Process.Start(info).Id;
}
else
{
throw new Exception("Could not find file.exe at " + filepath);
}
作为进程启动的项目构建到控制台应用程序中,并且仅包含一个 .cs 文件,该文件只有一个 Main()。
进程应该立即运行这个 Main 方法,但是我在 main 方法的第一行设置了一个断点,它永远不会被命中。可执行文件已附加到从主项目创建的进程中,并且文件路径正确。
我的问题是我是否正确地调试了这个进程,以及是否有更好的方法来调试进程内的项目文件?
【问题讨论】:
-
你也可以自己调试这个其他进程。将其调试命令行参数设置为与您的第一个项目的代码传递的相同(即,无论 args 变量的内容如何)...实际上不需要如果您想要/需要调试项目#2,请执行/启动项目#1。顺便说一句,如果您的第二个程序总是需要以提升的权限运行,您可以通过相应地设置应用程序清单来更好地执行此操作 (see here)
-
“可执行文件已附加到文件”?那没有意义。您可以将调试器附加到可执行文件。
-
Visual Studio 恕我直言,无法调试子进程。其他调试器如WinDbg可以,见
.childdbg -
对不起,我会解决这个问题,我的意思是我将它附加到进程中。