【问题标题】:How do I debug the file in a process that runs an executable in c# using VS2013?如何在使用 VS2013 在 c# 中运行可执行文件的进程中调试文件?
【发布时间】: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
  • 对不起,我会解决这个问题,我的意思是我将它附加到进程中。

标签: c# .net debugging process


【解决方案1】:

一种调试方法是: 在 Visual Studio 中打开控制台应用程序项目 在项目属性中,对于调试,将“启动外部程序”设置为主项目的 exe

现在,如果你调试这个项目,你的断点应该被命中

【讨论】:

    【解决方案2】:

    您需要附加到其他进程。您可以从 VS 中完成。

    转到Debug -> Attach to process 并在列表中选择您的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      相关资源
      最近更新 更多