远程调试 Web 服务时的问题
Posted
技术标签:
【中文标题】远程调试 Web 服务时的问题【英文标题】:Issue when remotely debugging a web service 【发布时间】:2011-09-01 14:59:03 【问题描述】:我在 Google 和 *** 上多次发现这个问题,但没有人回答我的情况。
我正在尝试远程调试 Web 服务,远程调试设置正确,我已部署最新版本(连同 pdb 文件)并将调试器附加到远程计算机上的 w3wp 进程。但是,一旦附加,我的所有断点都会自动禁用(断点当前不会被击中。没有为此文档加载任何符号)。有谁知道我做错了什么?
到目前为止,我已经尝试了以下方法:
在高级编译选项中将“生成调试信息”设置为“完整”。 在高级编译选项中将“启用优化”设置为“假”。 在“模块”窗口中,符号状态为“跳过加载符号” 尝试手动加载符号 尝试将符号设置中的符号文件位置更改为远程 pdb 文件 在部署前清理并重建解决方案 我尝试在调试选项中取消选中“仅我的代码”,这似乎可以解决问题,但是当我调用 Web 服务时,没有遇到断点。 This site 看起来很有希望,但最终没有帮助 the pdb is on the remote machine【问题讨论】:
【参考方案1】:经过一番折腾,我似乎已经实现了我想要的:
在高级编译选项中 将“生成调试信息”设置为“完整”。 将“启用优化”设置为“假”。 确保符号设置中的符号文件位置(调试 - 模块窗口)指向正确的位置 我将远程位置和本地位置添加到 .pdb 位置 在部署前清理并重建解决方案【讨论】:
禁用优化确实为我解决了问题! (VS2013)【参考方案2】:我从来没有找到一个可靠的方法来让它工作。当尝试调试托管在 IIS 中的 WCF 服务时,一遍又一遍地执行相同的过程(重建、部署、重新启动站点、附加)我有时会加载符号,有时不会。
就我而言,这归结为我是否在部署之后之前附加到进程(这反过来导致 IIS 编译并执行其时髦的事情)。
我发现如果我遵循这些步骤,它对我有用:
-
重建解决方案
部署到远程服务器
重启 IIS - 我怀疑这是必要的,我确定重启应用程序池就足够了
找到工作进程并附加到它 -
此时断点将被禁用,这很好
从网站请求一些东西 -
我只是使用浏览器做到了这一点。这导致 IIS 编译我的应用程序。通过在此编译之前附加 VS,我发现我正在加载符号(至少比以前更频繁)。
也许同样的过程也适合你?
【讨论】:
不存在将调试器附加到的 w3wp 进程,直到我从站点请求某些内容或将其加载到浏览器中(这不是 WCF,因此它在这方面的工作方式可能不同)。 也许,也许我已经忘记了我已经遵循的步骤...... ^^ 另一件显而易见的事情,您是否正在使用调试配置编译 Web 项目?它经常被遗漏,但是如果部署的项目是使用发布配置编译的,您将无法在附加后捕获断点 我查过了。我现在已经解决了这个问题。【参考方案3】:就我而言,我已将 pdb 部署到 iis 工作进程路径,所以一切都应该很好,我真的不明白为什么会出现“跳过加载符号”。 我真的觉得它只是没有心情(没有理性的原因)。
所以我右键单击我有兴趣调试的 dll(也可以选择多个文件), 并选择 Load Symbols From > Symbol Path
这导致它们被加载。
然后我可以调试它。谢谢!
【讨论】:
以上是关于远程调试 Web 服务时的问题的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Web 服务器上开始调试。未出现 Visual Studio 2019 远程调试器 (MSVSMON.EXE)