C# 如何远程调试控制台应用程序

C# 如何远程调试控制台应用程序,c#,.net,visual-studio-2010,debugging,remote-debugging,C#,.net,Visual Studio 2010,Debugging,Remote Debugging,有人知道如何远程调试控制台应用程序吗? 使用snippet,我可以将执行进程util enter保存到主代码中,但是,当我从VS附加到进程时,断点显示为不可命中 static void Main(string[] args) { if (args.Any(arg => arg == "debug")) { while (!Debugger.IsAttached) { Threa

有人知道如何远程调试控制台应用程序吗? 使用snippet,我可以将执行进程util enter保存到主代码中,但是,当我从VS附加到进程时,断点显示为不可命中

static void Main(string[] args)
{
    if (args.Any(arg => arg == "debug"))
    {          
        while (!Debugger.IsAttached)
        {           
            Thread.Sleep(10000);
        }
        Debugger.Break();
     }
}       

您展示的不是远程调试的工作方式。您可以在另一台计算机(通常在您的工作组/域中)上运行应用程序,并在远程计算机上安装与您的Visual Studio版本匹配的远程调试工具。确保将应用程序编译为DEBUG并在远程计算机上提供符号

然后,在本地计算机上,需要转到“调试”菜单-->附加到进程,并将调试器连接到要在远程计算机上调试的正在运行的进程。现在,当代码运行并到达您在本地设置的断点(或异常)时,您将看到调试器在本地计算机上暂停

MSDN:

编辑-定位符号文件:


如果查找已编译二进制文件的位置(bin文件夹,然后是编译类型),并找到以*.pdb结尾的文件。这包含符号。确保其与远程计算机上的exe位于同一位置

这不是工作原理。这不是怎么回事!我用这个程序来做。远程调试器正在远程计算机上运行,我已附加到该进程。但我不明白你说的“符号”是什么意思@如果查找已编译二进制文件的位置(bin文件夹,然后是编译类型),并找到以*.pdb结尾的文件,则使用user6847。这包含符号。确保其与远程计算机上的exe位于同一位置。是否存在。我已在远程计算机上复制了整个调试文件夹。如果它是控制台应用程序,请确保在进程仍处于活动状态且未命中断点之前连接到该进程。根据您发布的代码,很可能调试器没有在断点之前附加。还请记住,调试器类被标记为已过时。正如您所看到的,hat代码段有助于将live保留在该循环中,而我没有附加到该进程。当我这样做时,它应该进入主代码。问题是,当我将VS附加到该进程时,它不会从循环中退出。它似乎无法识别附加的调试器