3

我在 Google 和 StackOverflow 上多次发现这个问题,但没有人回答我的情况。

我正在尝试远程调试 Web 服务,远程调试设置正确,我已经部署了最新版本(连同 pdb 文件)并将调试器附加到远程机器上的 w3wp 进程。但是,一旦附加,我的所有断点都会自动禁用(断点当前不会被击中。没有为此文档加载任何符号)。有谁知道我做错了什么?

到目前为止,我已经尝试了以下方法:

  • 在高级编译选项中将“生成调试信息”设置为“完整”。
  • 在高级编译选项中将“启用优化”设置为“假”。
  • 在“模块”窗口中,符号状态为“跳过加载符号
    • 尝试手动加载符号
    • 尝试将符号设置中的符号文件位置更改为远程 pdb 文件
  • 在部署之前清理并重建解决方案
  • 我尝试在调试选项中取消选中“仅我的代码”,这似乎解决了问题,但是当我调用 Web 服务时,没有遇到断点。
  • 这个网站看起来很有希望,但最终没有帮助
  • pdb 在远程机器
4

3 回答 3

3

经过一番折腾,我似乎已经实现了我想要的:

  • 在高级编译选项中
    • 将“生成调试信息”设置为“完整”。
    • 将“启用优化”设置为“假”。
  • 确保符号设置中的符号文件位置(调试 - 模块窗口)指向正确的位置
    • 我将远程位置和本地位置添加到 .pdb 位置
  • 在部署之前清理并重建解决方案
于 2011-05-25T16:08:40.113 回答
0

就我而言,我已将 pdb 部署到 iis 工作进程路径,所以一切都应该很好,我真的不明白为什么会出现“跳过加载符号”。我真的觉得它只是没有心情(没有理性的原因)。

所以我右键单击我有兴趣调试的 dll(也可以选择多个文件),然后选择 Load Symbols From > Symbol Path

这导致它们被加载。

然后我可以调试它。谢谢!

于 2013-08-28T20:41:45.457 回答
0

我从来没有找到一个可靠的方法来让它工作。当尝试调试托管在 IIS 中的 WCF 服务时,一遍又一遍地遵循相同的过程(重建、部署、重新启动站点、附加)我有时会加载符号,有时不会。

就我而言,这取决于我是否在部署后有人对站点提出请求之前附加到该过程(进而导致 IIS 编译并执行其时髦的工作)。

我发现如果我遵循这些步骤,它对我有用:

  1. 重建解决方案
  2. 部署到远程服务器
  3. 重新启动 IIS -我怀疑这是必要的,我确定重新启动应用程序池就足够了
  4. 找到工作进程并附加到它—— 此时断点将被禁用,这很好
  5. 从网站上请求一些东西—— 我只是使用浏览器完成的。这导致 IIS 编译我的应用程序。通过在此编译之前附加 VS,我发现我正在加载符号(至少比以前更频繁)

也许同样的过程对你有用?

于 2011-05-25T10:12:39.333 回答