C# 如何在远程计算机上调试程序?

C# 如何在远程计算机上调试程序?,c#,remote-debugging,C#,Remote Debugging,我相信这已经被问到和回答了,我为此道歉,但我甚至不确定我在寻找什么或需要做什么。我是一个会编程的电气工程师,但当涉及到服务器和远程设备时,我真的迷路了 不管怎样,这是棍子。我会尽量说得具体一些 我不确定这部分是否重要,但为了清楚起见,我会尽量解释。我们正在研制一种机器。这台机器由工控机运行。IPC基本上是一个嵌入式Windows 7的PLC,IPC本身是用结构化文本编程的,用VS2013编写(不适用于较新版本)。为了“激活”我们在VS2013中设置的编程和参数,此计算机必须通过以太网电缆连接到机

我相信这已经被问到和回答了,我为此道歉,但我甚至不确定我在寻找什么或需要做什么。我是一个会编程的电气工程师,但当涉及到服务器和远程设备时,我真的迷路了

不管怎样,这是棍子。我会尽量说得具体一些

我不确定这部分是否重要,但为了清楚起见,我会尽量解释。我们正在研制一种机器。这台机器由工控机运行。IPC基本上是一个嵌入式Windows 7的PLC,IPC本身是用结构化文本编程的,用VS2013编写(不适用于较新版本)。为了“激活”我们在VS2013中设置的编程和参数,此计算机必须通过以太网电缆连接到机器。我也可以通过这台电脑遥控机器

为了让操作员控制机器,CS少校编写了一个程序,我们称之为HMI或人机界面。我通过VS2017访问并更新用C#编写的代码。该项目被设置为一个解决方案,为了在进行更改后“激活”此编程,我只需构建解决方案并通过远程接口将dll文件复制到机器上。在那台机器上,我们只需点击一个启动IPC的可执行文件,然后我猜IPC已经链接到HMI程序,因为在那之后很快就会打开

好的,现在,我正试图在这个HMI中实现一个新功能,我遇到了一些未知的错误。为了在我以前编写的任何程序中纠正这一点,我通常会设置一个断点和/或运行调试器并逐步执行,直到它中断。然而,由于该程序必须与IPC一起运行,它将值传递给IPC并从IPC接收输出,因此它比IPC更复杂

我提到的CS人员不再在这里工作,但他的笔记说,只要我使用我提到的以太网连接线连接,调试器就可以运行。但是,当我尝试时,我得到“无法直接启动输出类型为类库的项目。若要调试此项目,请在此解决方案中添加引用库项目的可执行项目。将可执行项目设置为启动项目。”

现在,通过谷歌搜索,我发现并尝试将解决方案设置为启动项目,但当我选择该解决方案时,似乎没有发生任何事情,而且错误仍然存在。我猜我需要做后一件事,即“向解决方案中添加一个可执行项目,并将其设置为启动项目”。。。但我真的不知道那意味着什么

我是否“添加现有项目”(在文件下)?如果是,这是否是VS2013的项目/解决方案

或者我是否需要添加我们在机器上单击的可执行文件

我听上去像个白痴,我知道,那是因为当涉及到这件事时,我是个白痴,哈哈。它可能太复杂了,以至于任何人都无法回答,或者太简单了,以至于我想得太多了。我现在不知道,我很绝望


也就是说,如果有人有任何想法,我将非常感激。不管怎样,谢谢你抽出时间

您可以使用Visual Studio的“调试”菜单中的“附加到进程”工具来调试正在执行的进程。只要代码和流程代码匹配,这会将源代码附加到正在执行的流程。

为什么不将它从IPC获得的值硬编码以进行测试?我已经尝试过这样做,还有一些我知道的其他技巧,但这一个很难实现。我不想深入讨论我试图修复的实际错误的细节,因为这只会混淆问题,能够像正常情况一样运行调试器将更有价值。HMI有5000行代码,太多的变量无法单独尝试和观察。“为了调试此项目,请在此解决方案中添加一个引用库项目的可执行项目。”因此,您可以添加一个引用库的控制台项目,并将其设置为启动项目?谢谢各位的建议。我找到了我的答案。我有很多工作要做,就像我没有意识到IPC上的网络访问被禁用。。。当我一直通过远程桌面连接到它时,这是没有意义的。一旦我这样做了,我就可以选择我需要的过程,这需要一些尝试和错误。但最终,它还是奏效了。非常感谢你!