【问题标题】:How do I debug a Worker Role using Remote Desktop with Windows Azure?如何在 Windows Azure 中使用远程桌面调试辅助角色?
【发布时间】:2011-09-28 10:41:46
【问题描述】:

我现在已经设置了我的 Windows Azure 环境,以便我可以使用远程桌面访问我的 Worker 角色。但是,我目前不确定如何进行。经过大量挖掘,我发现了一个离线的网站,但在 Google 的缓存中,提到了从 Visual Studio 调试器附加到在 Azure 云中运行的 Worker Role。但是我只有 Visual Developer(不是工作室)2010,而且我已经搜索了所有内容,据我所知,没有这样的选项可以连接到远程服务器。我能够毫无错误地将我的项目发布到 Azure 云,并且我的 Worker Role 的“健康”实例显示为活动且正在运行。

我确实通过 Azure 管理门户连接了 RDP。登录工作正常,远程桌面窗口出现了。我搜索了很多我能找到的东西,但找不到我的工人角色。我对RDP的印象一定是错误的,因为我本来希望在登录的时候看到Worker Role的主显示窗体,就像我在Cloud Emulator本地调试时一样。但相反,我看到的只是一个空白桌面,上面有一些基本的服务器检查和管理例程。我什至检查了事件查看器以获取与应用程序相关的消息,但没有看到任何消息。

所以现在我想知道我的 Worker Role 是否真的在运行,尽管来自管理门户的状态消息看似积极,如果可能的话,我仍然想附加到我的 Worker Role 以通过 Visual Developer 进行调试,但我无法弄清楚如何。

任何有这方面经验的人可以给我一些关于下一步做什么的可靠提示,请回复。

更新:我相信我的工作角色可能正在运行,因为我打开了一个命令窗口并执行了 Netstat 并看到它正在侦听正确的端口。但是,这可能只是我的 Worker Role shell 类,它启动了自定义 EXE,我将它作为衍生进程启动。我还没有确认我的自定义 EXE 是否正在运行。

UPDATE-2:刚刚从命令窗口运行 TaskList 并列出了自定义 EXE。

UPDATE-3:一切正常,因为我刚刚对服务进行了远程测试,所以这不是问题。仍然想知道如何从 Visual Developer 2010 附加到 Worker Role 以进行远程调试,以及是否可以像我在 Cloud Emulator 中进行本地调试时一样看到自定义 EXE 的显示形式。

-- 罗施勒

【问题讨论】:

  • 您必须使用调试器进行连接吗?还是只看消息就足够了?
  • @Anže Vodovnik - 我会采取我现在能得到的,但最终我需要调试我想。另外,请参阅我对原始帖子的更新说明。如果您还没有看到它,那是因为我还没有完成输入。
  • 另外,是否可以像我在本地调试时看到的那样看到我的 Worker Role 主屏幕的远程屏幕演示(RDP 是否这样做)?

标签: azure remote-debugging remote-desktop azure-worker-roles


【解决方案1】:

【讨论】:

【解决方案2】:

您可以使用 Visual Studio 2012 设置远程调试
http://code.msdn.microsoft.com/Remote-Debugging-Windows-dedaaec9

【讨论】:

【解决方案3】:

当你说:

但我看到的只是一个空白桌面,上面有一些基本的服务器检查和管理例程。

这正是您使用 Azure VM 所获得的。这是一个基本的操作系统安装,加上它需要运行的最基本的 Azure 东西和你上传的代码。默认情况下,机器上没有花哨的监控或运行状况检查,您应该自己提供这些以使它们可用,而无需 RDP 进入机器进行检查。

RDP 非常适合跟踪某些问题,例如检查启动任务是否会运行,检查项目安装在哪些目录中,并且通常只是很麻烦。如果您需要额外的工具来追踪问题,您可以在连接到服务器时安装它们。例如,我已经 RDP 到服务器并安装了Microsoft Debugging Tools,以追踪内存问题。

【讨论】:

  • 当我在本地调试由我的 C# Worker Role 代码生成的自定义 EXE 时,在 Cloud Emulator 中,它会出现一个显示表单,其中包含一个日志窗口和其他一些东西;主应用程序屏幕,如果你愿意的话。这与 EXE 独立运行时的行为完全相同。换句话说,它不是无窗口后台服务,甚至不是控制台应用程序。这是一个完整的 Windows GUI 应用程序。当我登录 RDP 控制台时,我看不到应用程序的 GUI,即使它运行良好。我试图找出为什么我看不到那个 GUI 元素,以及是否有办法。
  • @knightpfor - 感谢 Microsoft 调试工具链接。如果您知道有说明如何使用 Azure 和 Visual Developer 2010 进行安装的教程,请告诉我。
  • 当您 RDP 进入您的 VM 时,您将作为您在 RDP 设置中指定的特定用户执行此操作。但是,您的工作人员角色并未作为该用户运行,而是作为系统帐户之一运行(我不记得是哪一个)。因此,与任何其他 RDP 会话一样,您无法看到其他用户的桌面。
【解决方案4】:

我想你可以远程进入你的虚拟机,在那里安装 Visual Studio,然后调试进程......

我还认为可以启用远程调试(不确定其中涉及什么,但存在这样的东西,并且它通过 TCP 工作)并从 Visual Studio 的本地实例进行调试。

据我所知,这两种方法都不常见。

【讨论】:

  • 我做过远程调试,但是太慢了,不实用。我认为 WinDebug 可能是要走的路,但学习曲线非常陡峭。
  • 你好@smarx。我偶然发现的网页提到了将一些额外的 DLL 烘焙到 Worker Role 中。但我得到了我正在寻找的答案。这不实用。我仍然希望能够看到我的自定义 EXE 的 GUI,由于某种原因,当我使用 RDP 登录时它是不可见的。
  • 当您进入 RDP 时,您与运行 exe 的位置不在同一个 GUI 上下文中。 (您甚至没有以同一用户身份登录。)我什至不确定您的 exe 一个 GUI 上下文供您查看。
  • @smarx - 对。忘记了一个简单的事实,即 RDP 不像注入的监控程序,而是单独登录的用户,谢谢。
【解决方案5】:

根据其他答案,您最好将日志文件写入本地存储。如果您真的需要,您可以从 RDP 读取文件。请记住,在 Azure 上进行调试并不是很简单,这是正确的。

我的想法是,也许你可以运行 process using the user's credentials. I 无法验证,但你在 rdp 时可以更好地看到 ui。

【讨论】:

  • 关于用户凭据的有趣想法。听起来我的下一个项目需要挖掘本地存储,然后是 SQL 存储。希望 Azure SQL 与 MySQL 没有太大区别。
猜你喜欢
  • 2014-09-17
  • 2013-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
相关资源
最近更新 更多