导出 (0) 打印
全部展开

在 Visual Studio 中调试云服务或虚拟机

更新时间: 2014年8月

Visual Studio 提供了不同的选项让你调试 Azure 云服务和虚拟机。

本主题包含以下小节。

使用 Azure 计算仿真程序调试本地计算机上的云服务可为你节省时间和资金。部署某个服务之前在本地对它进行调试可以提高可靠性和性能,且不会产生计算时间的相关费用。但是,仅当你在 Azure 自身中运行云服务时,某些错误才可能会出现。如果你在发布服务时启用远程调试,然后将调试器附加到角色实例,则可以调试这些错误。

该仿真程序将仿真 Azure 计算服务并在你的本地环境中运行,使你可以在部署云服务之前对其进行测试和调试。该仿真程序将处理角色实例的生命周期,并提供对所仿真资源(如本地存储)的访问。当你从 Visual Studio 调试或运行服务时,Visual Studio 会自动将仿真程序作为后台应用程序启动,然后将服务部署到仿真程序。当仿真程序在本地环境中运行时,你可以使用它来查看服务。可以运行完整版或速成版的仿真程序。(从 Azure 2.3 开始,将默认安装速成版的仿真程序。)请参见使用 Emulator Express 在本地运行和调试云服务

  1. 在 Azure 计算仿真程序菜单栏中,单击“调试”>“调试”

  2. 显示计算仿真程序的用户界面,方法是打开通知区域中的 Azure 图标的快捷菜单,然后单击“显示计算仿真程序用户界面”

    用户界面的左窗格显示了当前部署到计算仿真程序的服务以及每项服务正在运行的角色实例。可选择服务或角色,以便在右窗格中显示生命周期、日志记录和诊断信息。如果将焦点置于包括窗口的上边距中,则该窗口将会展开以填写右侧窗格。

  3. 通过单击“调试”菜单中的命令并在代码中设置断点,来逐步调试应用程序。

    随着在调试器中逐步调试应用程序,将窗格及当前状态的应用程序一起更新。当停止调试时,将删除应用程序部署。

    如果应用程序包含 Web 角色并且你将“启动操作”属性设置为启动 Web 浏览器,则 Visual Studio 将在浏览器中启动你的 Web 应用程序。

    如果要更改服务配置中某个角色的实例数目,则必须停止云服务,然后重新启动调试,以便调试这些新的角色实例。

    note备注
    停止运行或调试服务时,不会停止本地计算仿真程序和存储仿真程序。你必须从通知区域显式将其停止。

若要从远程计算机调试云服务,必须在部署云服务时显式启用该功能,以便在运行角色实例的虚拟机上安装所需的服务(例如 msvsmon.exe)。如果在发布服务时未启用远程调试,则必须在启用远程调试的情况下重新发布该服务。

为云服务启用远程调试不会导致性能下降或费用增加。不应在生产服务上使用远程调试,因为使用该服务的客户端可能会受到不利影响。

note备注
从 Visual Studio 中发布云服务时,可以为该服务中所有以 .NET Framework 4 或 .NET Framework 4.5 为目标的角色启用 IntelliTrace。使用 IntelliTrace 可以检查过去发生在某个角色实例中的事件,并重现当时的上下文。请参阅使用 IntelliTrace 和 Visual Studio 调试已发布的云服务使用 IntelliTrace 进行调试

  1. 打开 Azure 项目的快捷菜单,然后单击“发布”

  2. 选择“过渡”环境和“调试”配置。

    这些内容仅供指导。你可以选择在生产环境中运行测试环境。但是,如果在生产环境中启用远程调试,则可能会对用户造成不利影响。你可以选择“发布”配置,但是,“调试”配置能使调试变得更轻松。

    选择调试配置
  3. 请遵照一般步骤操作,但需要选中“高级设置”选项卡上的最后一个复选框。

    调试配置

  1. “服务器资源管理器”中,展开云服务的节点。

  2. 打开你要附加到的角色或角色实例的快捷菜单,然后单击“附加调试器”

    附加调试器

    如果你调试某个角色,Visual Studio 调试器将附加到该角色的每个实例。对于运行某个断点所在的代码行并符合该断点的所有条件的第一个角色实例,调试器将在该断点位置中断。如果你调试某个实例,调试器将只附加到该实例,并且仅当该特定实例运行某个断点所在的代码行并符合该断点的条件时,调试器才在该断点位置中断。

  3. 将调试器附加到实例后,请按平时一样调试。

    “选择代码类型”对话框

    调试器将自动附加到角色的相应主机进程。根据具体的角色,调试器将附加到 w3wp.exe、WaWorkerHost.exe 或 WaIISHost.exe。若要确认调试器附加到的进程,请展开“服务器资源管理器”中的实例节点。有关 Azure 进程的详细信息,请参阅 Azure 角色体系结构

  4. 若要识别调试器附加到的进程,请通过在菜单栏中选择“调试”>“Windows”>“进程”来打开“进程”对话框。(键盘操作:Ctrl+Alt+Z)

    调试进程

    若要分离特定的进程,请打开其快捷菜单,然后单击“分离进程”。或者,在“服务器资源管理器”中找到实例节点,找到该进程,打开其快捷菜单,然后单击“分离进程”

Warning警告
进行远程调试时,请避免长时间停止在断点位置。Azure 会将停止时间超过数分钟的进程视为无响应,并停止向相应的实例发送流量。如果停止时间太长,msvsmon.exe 将与进程分离。

若要将调试器与实例或角色中的所有进程分离,请打开你正在调试的角色或实例的快捷菜单,然后单击“分离调试器”

对于 Azure SDK 4.3,远程调试存在以下限制。

  • 启用远程调试后,无法发布其中的任一角色包含 25 个以上实例的云服务。

  • 调试器使用端口 30400 至 30424 以及端口 31400 至 31424。如果你尝试使用其中的任一端口,将无法发布服务,并且 Azure 的活动日志中将显示以下错误消息之一:

    • 根据 .csdef 文件验证 .cscfg 文件时出错。角色“role”的终结点 Microsoft.WindowsAzure.Plugins.RemoteDebugger.Connector 的保留端口范围“range”与已定义的端口或范围重叠。

    • 分配失败。请稍后重试,尝试减少 VM 大小或角色实例数目,或者尝试部署到其他区域。

可以在 Visual Studio 中使用“服务器资源管理器”调试 Azure 虚拟机上运行的程序。在 Azure 虚拟机上启用远程调试时,Azure 将在该虚拟机上安装远程调试扩展。然后,你可以附加到该虚拟机上的进程,并像平时一样进行调试。

  1. “服务器资源管理器”中,展开“虚拟机”节点并选择你要调试的虚拟机的节点。

  2. 打开上下文菜单,然后单击“启用调试”

    虚拟机启用调试命令

    当系统询问你是否确定要在虚拟机上启用调试时,请单击“是”

    Azure 将在该虚拟机上安装远程调试扩展以启用调试。

    Azure 活动日志
  3. 完成安装远程调试扩展后,请打开虚拟机的上下文菜单,然后单击“附加调试器...”

    附加调试器命令

    Azure 将获取虚拟机上的进程的列表,并在“附加到进程”对话框中显示这些进程。

  4. “附加到进程”对话框中,单击“选择”以将结果列表限制为仅显示你想要调试的代码类型。你可以选择托管代码和/或本机代码。

    “选择代码类型”对话框
  5. 单击虚拟机上你要调试的进程,然后单击“附加”。例如,如果你想要调试虚拟机上的某个 Web 应用程序,则可以选择 w3wp.exe 进程。有关详细信息,请参阅在 Visual Studio 中调试一个或多个进程Azure 角色体系结构

在发布 Azure 项目之前,你可能会发现,在支持调试和测试方案并且可以在其中安装测试和监视程序的受控环境中对该项目进行测试会很有用。执行此操作的方法之一是远程调试虚拟机上的应用程序。

Visual Studio ASP.NET 项目提供了一个选项,让你创建可用于应用程序测试且易于操作的虚拟机。该虚拟机包含通常需要的终结点,例如 PowerShell、远程桌面和 WebDeploy。

  1. 在 Visual Studio 中创建一个新的 ASP.NET Web 应用程序。

  2. “新建 ASP.NET 项目”对话框的“Azure”部分,从下拉列表框中选择“虚拟机”。保留“创建远程资源”复选框的选中状态。单击“确定”继续。

    “创建 ASP.NET Web 项目”对话框

    此时将出现“在 Azure 上创建虚拟机”对话框。

    note备注
    如果你尚未登录到 Azure 帐户,系统将要求你登录。

  3. 选择虚拟机的各项设置,然后单击“确定”。有关详细信息,请参阅虚拟机

    “在 Azure 上创建虚拟机”对话框
    note备注
    “DNS 名称”输入的名称也就是虚拟机的名称。

    Azure 将创建虚拟机,然后设置并配置终结点,例如远程桌面和 Web 部署

  4. 完全配置好虚拟机后,请在“服务器资源管理器”中选择该虚拟机的节点。

  5. 打开上下文菜单,然后单击“启用调试”

    虚拟机启用调试命令

    当系统询问你是否确定要在虚拟机上启用调试时,请单击“是”

    Azure 将在该虚拟机上安装远程调试扩展以启用调试。

    Azure 活动日志
  6. 根据如何:在 Visual Studio 中使用一键式发布来部署 Web 项目中所述发布你的项目。由于你想要在虚拟机上进行调试,因此,请在“发布 Web”向导的“设置”页上选择“调试”作为配置。这可以确保在调试时代码符号可用。

    发布设置
  7. 如果以前已经部署了该项目,请在“文件发布选项”中,选择“删除目标位置的其他文件”

  8. 发布项目后,在“服务器资源管理器”中的虚拟机上下文菜单上,单击“附加调试器...”

    附加调试器命令

    Azure 将获取虚拟机上的进程的列表,并在“附加到进程”对话框中显示这些进程。

  9. “附加到进程”对话框中,单击“选择”以将结果列表限制为仅显示你想要调试的代码类型。你可以选择托管代码和/或本机代码。

    “选择代码类型”对话框
  10. 单击虚拟机上你要调试的进程,然后单击“附加”。例如,如果你想要调试虚拟机上的某个 Web 应用程序,则可以选择 w3wp.exe 进程。有关详细信息,请参阅在 Visual Studio 中调试一个或多个进程

另请参阅

Microsoft 正在进行一项网上调查,以了解您对 MSDN 网站的意见。 如果您选择参加,我们将会在您离开 MSDN 网站时向您显示该网上调查。

是否要参加?
显示:
© 2014 Microsoft