我在Google和StackOverflow上多次发现这个问题,但没有人回答我的情况 .
我正在尝试远程调试Web服务,正确设置远程调试,我已部署最新版本(以及pdb文件)并将调试器附加到远程计算机上的w3wp进程 . 但是,一旦连接,我的所有断点都会被自动禁用(断点当前不会被命中 . 此文档没有加载任何符号) . 有谁知道我做错了什么?
到目前为止我已尝试过以下内容:
-
在高级编译选项中设置'Generate Debug Information'到'FULL' .
-
在高级编译选项中设置'Enable Optimisations'到'False' .
-
在“模块”窗口中,符号状态为“已跳过加载符号”
-
尝试手动加载符号
-
尝试将符号设置中的符号文件位置更改为远程pdb文件
-
在部署之前清理并重建解决方案
-
我尝试在调试选项中取消选中'Just My Code',这似乎解决了问题,但是当我调用Web服务时,没有遇到任何断点 .
-
This site看起来很有希望,但最终没有帮助
3 回答
我从来没有找到一种确定的方法来让它发挥作用 . 在尝试调试IIS中托管的WCF服务时,一遍又一遍地执行相同的过程(ReBuild,Deploy,Restart Site,Attach),我有时会加载符号,有时不加载 .
在我的情况下,它归结为我是否在我部署之后有人向网站发出请求之前附加到该进程(反过来导致IIS编译并执行其时髦的东西) .
我发现如果我按照这些步骤操作,它对我有用:
重建解决方案
部署到远程服务器
重启IIS - 我怀疑这是必要的,重启应用程序池就足够了我敢肯定
找到工作进程并附加到它 - 此时将禁用断点,这很好
从网站请求一些东西 - 我只是使用浏览器这样做 . 这导致IIS编译我的应用程序 . 通过在编译之前附加VS,我发现我正在加载符号(至少比以前更频繁) .
也许同样的过程对你有用吗?
经过多次搞乱后,我似乎已经实现了我想要的东西:
在高级编译选项中
设置'Generate Debug Information'至'FULL' .
设置'Enable Optimisations'至'False' .
确保符号设置中的符号文件位置(调试 - 模块窗口)指向正确的位置
我将远程位置和本地位置添加到.pdb位置
在部署之前清理并重建解决方案
在我的情况下,我将pdb部署到iis工作进程路径,所以一切都应该是好的,我真的不明白为什么“跳过加载符号”出现了 . 我的印象真的不是那种情绪(没有理性的原因) .
所以我右键单击我对调试感兴趣的dll(也可以选择多个文件),然后选择Load Symbol From> Symbol Path
这导致他们被加载 .
然后我可以调试它 . 谢谢!