【问题标题】:Azure website debuggingAzure 网站调试
【发布时间】:2012-10-16 06:40:39
【问题描述】:

我了解我可以使用此处列出的方法调试 Azure Web 角色: http://msdn.microsoft.com/en-us/library/windowsazure/ee405479.aspx

调试 Windows Azure 网站的流程是什么?

我希望能够单步执行代码、设置断点等。

【问题讨论】:

  • 查看我最近的回答,因为这现在很容易做到。

标签: azure azure-web-roles


【解决方案1】:

根据this recent post,这现在是可能的。

以下是 Visual Studio 2012 的必要步骤,摘自该帖子:

  1. 在 Windows Azure 管理门户中,转到配置选项卡 您的网站,然后向下滚动到“网站诊断”部分
  2. 将远程调试设置为开,并将远程调试 Visual Studio 设置为 2012 版
  3. 在 Visual Studio 调试菜单中,单击附加到进程 在限定符框中,输入您的网站的 URL,不带 http:// 前缀
  4. 选择显示所有用户的进程
  5. 当系统提示您输入凭据时,输入具有 发布网站的权限
    1. 要获取这些凭据,请转到管理门户中您网站的仪表板选项卡,然后单击下载发布配置文件。在文本编辑器中打开该文件,您将在第一次出现 userName= 和 userPWD= 之后找到用户名和密码。
  6. 当进程出现在可用进程表中时,选择 w3wp.exe,然后单击附加
  7. 打开浏览器访问您的站点 URL。在 Windows Azure 设置服务器进行调试时,您可能需要等待 20 秒左右。这种延迟只会在您第一次在网站上以调试模式运行时发生。在接下来的 48 小时内,您再次开始调试时不会出现延迟。

【讨论】:

  • 这行得通,但我猜你不能设置断点和调试 Azure 网站。我尝试过 Trace.Writeline 但在输出窗口中看不到它。
  • 你绝对可以设置断点和检查局部变量。我不确定是否要写入控制台,但我能够检查变量并中断网站代码。
  • 如果您没有遇到断点,请确保您已在调试配置中发布而不是发布
  • 我只想补充一点,这在 Visual Studio 的 Express 版本中不可用
  • 如果你的网站是通过连接到像bitbucket这样的源代码控制部署的,那么在SCM_BUILD_ARGS的Azure管理界面中添加一个应用设置,其值为-p:Configuration=Debug
【解决方案2】:

答案与问题的答案相同 如何在任何共享主机提供商中调试(asp.net)网站?

  • 正确处理/记录异常
  • 在调试时使用<compilation debug="true" />仅在调试时
  • 为网站启用所有类型的错误报告(下图)
  • [在此处插入您最喜欢的调试共享主机站点的方式]

【讨论】:

  • 谢谢阿斯塔科夫。我想我应该更具体一些。我希望能够单步执行代码、设置断点等。您可以使用 IntelliTrace 对 Web 角色执行此操作,但我不确定如何对 Azure 网站执行此操作。
  • Intellitrace 不完全正确,因为它是“历史调试”,而不是实时调试。但我同意 Intellitrace 是诊断和调试 Web/worker 角色的非常强大的工具,尽管它仅随 VA Ultimate 提供。而且,截至今天,没有选项可以从 Azure 网站收集 Intellitrace 日志。因此,您可以进行常规的跟踪收集。
【解决方案3】:

更新:Azure 门户已更改,应用程序设置刀片即将停用。


我认为这值得为最新版本的 Azure 管理门户和 VS 提供更新的答案。

这就是我使用 Visual Studio 2017 Preview 7.1 实现 ASP.Net Core 2.0 API 远程调试的方法:

  1. 打开Azure Management Portal,浏览到您的Web App,单击配置> 常规设置,然后打开远程调试。以前它也要求提供 VS 版本,但这似乎不再是一个选项,我假设远程调试平台现在自动检测(但也可能是 2015 年之前的 VS 版本不再是这种情况支持,请参阅下面的 cmets)

  1. 编辑您的发布配置文件并将配置设置为调试,然后将 API 重新发布到 Azure:

  1. 在代码中设置断点
  2. 在 Visual Studio 中打开“服务器资源管理器”窗格,如果您尚未使用 Microsoft 帐户连接到 Azure,请连接它。

  3. 打开 Azure > 应用服务 > [资源组] 然后右键单击您的 Web 应用并选择 附加调试器 。经过一些配置后,它应该附加并且(如果已配置)VS 将打开一个浏览器到您的 Azure Web 应用程序。

  1. 点击您的网站/API,您的断点应该会被点击。

我收集的最后笔记:

  • 我注意到有时菜单中缺少“附加调试器”选项。如果停止服务是一个选项,从菜单中选择停止(等待)然后选择开始似乎足以使该选项再次出现。可能还有其他修复。
  • Some official documentation
  • 不要忘记将发布配置文件上的配置改回发布,然后重新发布发布版本。不要在生产中使用调试。谢谢@Manfred。
  • Avoid long stops 在断点处(谁能解释这可能会产生什么影响?)
  • It appears 48 小时后,远程调试功能自动关闭(目前无法确认)

【讨论】:

  • 我看不到 2013 选项。只有 2015 和 2017 作为 Remote Visual Studio 版本可用。你有什么线索吗?
  • @VaibhavBhatia 抱歉延迟回复。您是对的,应用程序设置页面(现已停用)不再显示 2015 年之前的版本。在我看来,这些版本不再受支持。我建议尽可能升级,因为 Azure 工具会不断升级新功能和修复,并且与旧 VS 版本不兼容。如果您在 2013 年,您可能很快会发现(如果您还没有的话)很少有与 Azure 兼容的。此外,闪亮的新 VS 2019 有一些可爱的新功能;)
【解决方案4】:

Scott Hanselman 最近在博客中提到了这个 here

这不是设置断点那么好,但是将记录的信息流式传输到控制台可以减少调试的痛苦。

【讨论】:

    【解决方案5】:

    Paul,从上面的一些建议中,这对您来说可能是一个进步: “Glimpse 类似于 FireBug 客户端调试器,不同之处在于它在客户端用 JavaScript 实现,并在服务器端与 ASP.NET 挂钩。”

    因此,虽然它不允许您设置断点,但至少您可以实时观看跟踪发生,而不必筛选日志文件。

    http://www.hanselman.com/blog/NuGetPackageOfTheWeek5DebuggingASPNETMVCApplicationsWithGlimpse.aspx

    【讨论】:

      猜你喜欢
      • 2016-06-09
      • 1970-01-01
      • 2014-05-29
      • 2014-04-26
      • 1970-01-01
      • 2017-08-24
      • 2014-02-08
      • 1970-01-01
      • 2016-10-07
      相关资源
      最近更新 更多