繁体   English   中英

在从 Azure DevOps Pipeline 构建和部署的 ASP.Net 应用程序上未加载用于远程调试的符号

[英]Symbols not loading for remote debugging on ASP.Net app built and deployed from Azure DevOps Pipeline

我有一个 ASP.Net 应用程序,它的代码位于 Azure 存储库中。 该项目有一个基于主分支合并的构建管道。 然后我有一个部署管道,它采用最新的构建并通过我在服务器上运行的部署池在我的 Web 服务器上本地部署。 Web 应用程序使用 VS Build 任务构建,并使用 IIS Web App Deploy 任务进行部署。 两者都工作正常。

我有一台装有 Visual Studio 的 VM,我正试图用它来远程调试 Web 服务器。 我在 Web 服务器上安装了 VS Remote Tools,它成功运行。 在我的 VM 上,我能够打开 VS,成功地将调试器附加到 Web 服务器上的远程进程。 问题是符号没有加载,我不确定这里的正确项目顺序是什么。

首先,Azure Pipeline 生成的构建中似乎没有任何 .pdb 文件。 其次,我不确定将代码放到 VM 上进行调试的正确方法是什么(克隆 repo、vs 下载 zip 等)。 第三,我尝试将 Publish Smybols 任务添加到我的部署管道中,但是它生成的 .pdb文件夹不是文件,我不确定将这些文件夹放在 Web 服务器上还是虚拟机上。

我的背景是经典的本地 TFS 设置,因此从 Azure DevOps 工作、构建和部署让我对如何使远程调试工作感到困惑。

好吧,这不适合胆小的人。 我花了 3 小时才慢慢解决这个问题 - 但这是值得的。 很多时候有些东西在本地工作,但是当你在远程服务器上用 CI 触发构建代理时,你不能用断点单步执行代码。

所以这个信息是如果你使用上述情况 - Azure build agent and Continuous Integration 如果您使用的是Publish Profile这不适用。

首先要做的事情......这个答案中最重要的部分可以在这个博客中找到:

https://willys-cave.ghost.io/i-have-a-dream-of-a-single-build-consistent-x-and-simple/

我已将该 URL 添加到archive.org的回程机器,以防它消失。

所以是的,问题是.PDB files - 它们需要通过添加Publish symbols task.来包含Publish symbols task. 在您的 VSO 管道中。

注意:我必须更改BuildConfiguration参数以进行debug (与 Willy 的说明不同)。 否则,当您最终开始遇到断点时,代码会得到优化,您将不会在悬停等中看到变量值。

在 VS 2019 中,威利关于Link to the symbols during remote debugging sessions的说明需要仔细阅读。 我没有。 有一个更好的图像:

https://devblogs.microsoft.com/devops/vsts-is-now-a-symbol-server/

我在这里包括屏幕截图:

在此处输入图片说明

重要的是,您需要将VSTS hostname添加到list of Symbol Servers

现在我的仍然没有达到断点,我找到了这个页面(这通常是关于使用稍微不同的发布配置文件的方法),但我注意到更多的组件被加载到 IIS 中......是的! 您可能也需要这些。

https://docs.microsoft.com/en-us/visualstudio/debugger/remote-debugging-azure?view=vs-2019

所以最重要的图片我会贴在这里:

在此处输入图片说明

您需要将IIS Management Scripts and Tools添加到您的 IIS 安装中。

那应该这样做。 此外,我以管理员身份运行我的远程调试器,将其附加到 w3wp.exe(显示所有用户进程),如果它没有出现 - 重新加载远程页面并刷新,就像池进入睡眠状态一样,您将看不到它列表

在此处输入图片说明

祝你好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM