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

时间:2019-06-25 19:24:19

标签: asp.net visual-studio debugging azure-devops remote-debugging

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

我在Visual Studio中有一个虚拟机,该虚拟机用于远程调试Web服务器。我在Web服务器上安装了VS远程工具,它可以成功运行。在我的VM上,我能够打开VS,将调试器成功附加到Web服务器上的远程进程。问题在于符号未加载,我不确定此处的正确顺序是什么。

首先,在Azure Pipeline生成的版本中似乎没有任何.pdb文件。其次,我不确定将代码放入VM进行调试的正确方法是什么(克隆存储库,下载zip等)。第三,我尝试将Publish Smybols任务添加到我的部署管道中,但是它生成的.pdb folders 不是文件,并且我不确定将其放置在Web服务器上还是在哪里。

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

1 个答案:

答案 0 :(得分:0)

好的,这不适合胆小者。我花了3个小时才慢慢解决这个问题-但这是值得的。很多时候在本地都可以正常工作,但是当您在远程服务器上使用CI触发Build Agent时,您将无法使用断点逐步浏览代码。

如果您使用的是上述情况-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/

我已将网址添加到archive.org的后退机器上,以防其消失。

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

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

在VS 2019中,Willy对于Link to the symbols during remote debugging sessions的说明需要仔细阅读。我没有在以下位置有更好的图像:

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

我在这里包括屏幕截图:

enter image description here

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

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

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

所以我将在此处粘贴最重要的图像:

enter image description here

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

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

enter image description here

祝你好运!