如何调试在云中运行的 Azure Web 角色?

Posted

技术标签:

【中文标题】如何调试在云中运行的 Azure Web 角色?【英文标题】:How to debug Azure web role running in the cloud? 【发布时间】:2012-09-12 05:40:48 【问题描述】:

我们需要调试仅在云中表现出来的问题。它不会出现在模拟器中(即使使用云连接字符串等)。我们在暂存网络角色实例上安装了 RDP,并在其上启用了 WebDeploy,以便快速轻松地进行调试/代码更改。

我们想要更强大的东西,我们的本地 VS2010 (Ultimate) 可以在远程 Web 角色上设置/触发断点并检查本地变量等。

有谁知道上面的设置方法吗?

【问题讨论】:

【参考方案1】:

您可以使用 Visual Studio 远程调试器来执行此操作。要启用此功能,您必须执行几个步骤。简而言之:

    在 azure 角色上安装远程调试器代理 创建一个虚拟网络组,以 azure 角色加入您的本地计算机 使用远程调试器

更详细的解释可以在这里找到: http://www.4tecture.ch/blog/remote-debugging-a-windows-azure-role-instance

【讨论】:

我现在可以连接到运行 Web 角色的远程(天蓝色)机器。在我发出第一个 HTTP 请求之前,无法看到 w3wp.exe 进程。然后,当我附加到 w3wp.exe 进程时,在 VS2012 中出现“无可用源:当前线程未运行代码或无法获取调用堆栈”。当我暂停该过程时也是如此。我确实上传/部署了调试版本……有什么想法吗? @DeepSpace101 感谢w3wp.exe 大喊,我附加到了错误的进程(来自 VS2013)【参考方案2】:

好的,由于 Azure SDK 更新、不正确的教程、VS2012 的怪癖,我花了几个小时来解决这个问题。 GertH 上面所说的在理论上是正确的(谢谢!),但如果没有系统层面的工作细节,它就不起作用,所以它在实践中不是很有用。

我在http://antirandom.com/2012/09/remotely-debugging-a-windows-azure-webrole-via-visual-studio-debugger/记录了我为未来战士工作的经验

【讨论】:

理想情况下,您应该从此处的链接中提出解决方案的一些要点......链接只回答不好。但这是一篇很长的帖子,所以不知道你会怎么做^^。【参考方案3】:

在 VS 2012 中,有一种更简单的方法来进行 Web 角色调试,因为远程调试器可以作为 TCP 服务端点公开。因此,您将不再需要 Azure Connect 部分。

这里有一篇很棒的博文:http://blog.fullscale180.com/remote-debugging-windows-azure-cloud-services-with-visual-studio-2012/

作为奖励,远程工具会在 WebRole 本身启动时自动配置和启动,因此您无需关心角色何时被回收。

【讨论】:

在所有情况下,远程调试器都是 TCP 服务 - 您希望使用 Azure Connect 隔离 *** 接口(而不是生产网络接口)上的调试流量。不是因为这是“唯一”的方式。在角色内部(关闭 blob)自动安装的部分很酷,但需要更改应用程序代码。事实上,可以从上面的链接中选择不同的步骤并将其与标记的答案混合。标记的答案文档连接到您的角色的特定实例。但是对这个主题有很好的补充! 链接已损坏。这可能会有所帮助geekswithblogs.net/shaunxu/archive/2013/11/02/…

以上是关于如何调试在云中运行的 Azure Web 角色?的主要内容,如果未能解决你的问题,请参考以下文章

Azure Pack 是不是支持使用 WASABi 自动缩放 Web 和辅助角色?

如何在 Windows Azure 中使用远程桌面调试辅助角色?

为 Azure Web 角色定义缩放阈值

Windows Azure 角色无响应

Windows Azure 自动缩放 - 在部署中找不到托管服务中定义的角色

微软云服务Azure所有产品简介