Visual Studio 提供了用于调试 Azure 云服务(扩展支持)和虚拟机的不同选项。
先决条件
- 安装了“Azure 开发”工作负载以及单个组件“.NET Framework 项目和项模板”的 Visual Studio(请参阅 [Visual Studio 下载] (https://aka.ms/vs/download/?cid=learn-onpage-download-cta))。 请参阅修改 Visual Studio。
- Azure 帐户。 如果你没有 Azure 帐户,请激活你的 Visual Studio 订阅者 Azure 权益或注册免费试用版。
在本地计算机上调试云服务
可以使用 Azure 计算模拟器在本地计算机上调试云服务,从而节省时间和金钱。 通过在部署服务之前在本地调试服务,可以提高可靠性和性能,而无需为计算时间付费。 但是,只有在 Azure 本身中运行云服务时,才会发生一些错误。 如果在发布服务时启用远程调试,然后将调试器附加到角色实例,则可以调试这些错误。
模拟器模拟 Azure 计算服务并在本地环境中运行,以便在部署云服务之前对其进行测试和调试。 模拟器处理角色实例的生命周期,并提供对模拟资源(例如本地存储)的访问权限。 从 Visual Studio 调试或运行服务时,它会自动启动模拟器作为后台应用程序,然后将服务部署到模拟器。 当服务在本地环境中运行时,可以使用模拟器查看服务。 可以运行完整版本或模拟器的快速版本。 请参阅 使用 Emulator Express 在本地运行和调试云服务。
在本地计算机上调试云服务
在菜单栏上,选择 调试>开始调试 来运行你的 Azure 云服务(扩展支持)项目。 或者,可以按 F5。 你将看到一条消息,指出计算模拟器正在启动。 模拟器启动时,系统托盘图标会确认它。
通过在通知区域中打开 Azure 图标的快捷菜单,然后选择 显示计算模拟器 UI来显示计算模拟器的用户界面。
UI 的左窗格显示当前部署到计算模拟器的服务以及每个服务正在运行的角色实例。 可以选择服务或角色,在右窗格中显示生命周期、日志记录和诊断信息。 如果将焦点置于包括窗口的上边距中,则该窗口将展开以填写右侧窗格。
通过选择 调试 菜单上的命令并在代码中设置断点来逐步调试应用程序。 在调试器中单步执行应用程序时,窗格会随着应用程序的当前状态而更新。 停止调试时,将删除应用部署配置。 如果应用程序包含 Web 角色,并且已设置启动操作属性以启动 Web 浏览器,Visual Studio 将在浏览器中启动 Web 应用程序。 如果更改服务配置中某个角色的实例数,则必须停止云服务,然后重启调试,以便可以调试角色的这些新实例。
注意
停止运行或调试服务时,不会停止本地计算模拟器和存储模拟器。 必须从通知区域显式将其停止。
在 Azure 中调试云服务
如果使用本部分中的过程为云服务启用远程调试,则不会显示性能下降或产生额外费用。 不要对生产服务使用远程调试,因为使用该服务的客户端可能会受到不利影响。
为云服务启用远程调试(扩展支持)
在 ServiceDefinition.csdef 中为默认的 msvsmon 端口添加一个终端。 对于 Visual Studio 2022,即 4026;对于 Visual Studio 2019,为 4024。
<Endpoints> <InputEndpoint name="RemoteDebug" protocol="tcp" port="4026" localPort="4026" /> </Endpoints>注意
其他版本的 Visual Studio 具有不同的端口 远程调试器端口分配。
如果要面向 .NET 4.8,请确保在发布云服务(扩展支持)时打开 ServiceConfiguration.Cloud.cscfg 文件,并检查
osFamily元素上的ServiceConfiguration属性的值。 对于 .NET 4.8 项目,请使用osFamily="7"。打开 Azure 项目的快捷菜单,然后选择 发布。
选择“过渡”环境和“调试”配置。
这只是一个准则。 可以选择在生产环境中运行测试环境。 但是,如果在生产环境中启用远程调试,可能会对用户产生负面影响。 可以选择“发布”配置,但调试配置可简化调试。
按照 云服务(扩展支持)中所述的常规步骤操作,但选中 为所有角色启用远程桌面 复选框。
系统将要求你为远程桌面用户创建用户名和密码,稍后需要登录到该虚拟机。
转到下一个屏幕,查看设置,准备就绪后,单击 发布 并等待部署完成。
登录到 Azure 门户 并导航到要调试的云服务(扩展支持)。
在左侧窗格中选择 角色和实例,然后选择想要远程调试的角色。
单击右侧 角色实例 弹出窗口中的 连接,然后选择“Connect”按钮下载远程桌面文件,以便登录到虚拟机。 使用在上一步中启用远程桌面时创建的凭据登录。
在远程 Azure 虚拟机上,安装 Visual Studio 2022 远程工具,如 远程调试中所述。
在虚拟机上的桌面上,在 下的 Visual Studio 安装文件夹中执行命令
Common7\IDE\Remote Debugger\x64。 请务必以管理员身份运行。接受提示以允许通过防火墙进行访问。 应会看到一条消息,指示 msvsmon.exe 已开始侦听连接。
在 Azure 门户中,打开资源组并获取云服务的公共 IP 地址(扩展支持)。
将调试器附加到 Azure 中的云服务(扩展支持)
注意
尽可能使用在发布过程中选择的调试配置进行调试,但是,如果要调试发布配置,请在 Visual Studio 中使用Ctrl+Q 搜索“Just My Code”,并在Tools>>>中取消选中“Enable Just My Code”。 发布版本经过优化,因此不被视为“我的代码”。
依次选择调试>附加到进程(或按 Ctrl+Alt+P)。
将连接类型保留为默认 。
使用 IP 地址和端口输入连接目标:
{ipaddress}:4026。将附加到设置为自动。
使用与远程桌面用户相同的凭据登录。
选择显示所有用户的进程。 如果要调试辅助角色,请附加到 WaWorkerHost.exe,如果要调试 Web 角色,请附加到 w3wp.exe 进程,对于 Web API 角色,请附加到 WaIISHost.exe。
设置断点(导航到行,然后按 F9),访问站点的公共 URL,并重现要调试的场景。
调试 Azure 应用服务
可以使用 Visual Studio 中的“附加到进程”对话框调试在 Azure 应用服务中运行的程序。
注意
这仅适用于从 Visual Studio 2022 17.1 开始的 Azure 应用服务。
调试 Windows Azure 应用服务
在调试下,选择附加到进程。
将连接类型更改为 Microsoft Azure 应用服务,然后选择查找...。
在打开的对话框中,选择 订阅名称。
注意
需要登录到一个 Microsoft 帐户,该帐户有权访问包含 Azure 应用服务的订阅。
按资源组或资源类型筛选视图,或按名称搜索。
接下来,选择要调试的应用服务,然后选择确定。
这将在应用服务上启用远程调试,并显示要附加到的可用进程列表。
选择要附加到的进程,然后选择附加以开始调试。
相关内容
使用 Azure 诊断记录 Azure 中角色内运行的代码的详细信息。 请参阅使用 Azure 诊断收集日志记录数据。
有关其他远程调试方案,请参阅 远程调试。