WCF 远程调试的符号位置
Posted
技术标签:
【中文标题】WCF 远程调试的符号位置【英文标题】:Location of symbols for WCF remote debugging 【发布时间】:2012-05-19 13:11:36 【问题描述】:这更像是一个“为什么会这样工作”而不是“我如何让这个工作”之类的问题。
我有一个正在远程调试的 WCF Web 服务。它被部署到安装了 VS 2010 远程调试器并作为 Windows 服务运行的登台服务器。权限是正确的,我可以毫无问题地附加到进程。我遇到的问题是我无法始终加载符号。
我将 WCF 服务部署到 C:\Webs\MyService,并在 C:\Webs\MyService\bin 中包含各种 DLL。它被设置为具有自己的应用程序池的单独站点。我发现即使 bin 文件夹中有必要的 .pdb 文件,当我从本地计算机附加到 w3wp.exe 进程时,Visual Studio 也不会加载任何符号。发生的事情是当 IIS 启动并产生工作进程时,我的服务 DLL 将被复制到临时 ASP.NET 文件目录下的深处,类似于 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP .NET 文件\root\19f82539\e55fff8f\assembly\dl3\2926a261\f625d158_f62ecd01。我发现如果我手动将 .pdb 文件复制到此文件夹,则会加载符号并进行调试。
我想知道为什么它会这样工作,以及如何避免手动将符号文件复制到另一个目录。更糟糕的是,如果我必须进行更改并重新部署,工作进程将无法识别它们。我不得不重新启动 IIS,这导致创建了一个不同的临时目录,需要我再次复制 .pdb。
【问题讨论】:
【参考方案1】:我有类似的问题,与 Web 应用程序有关。显然微软知道这一点:http://go4answers.webhost4life.com/Example/remote-debugging-symbols-not-loaded-207525.aspx
希望他们会尽快发布修复程序。
BrianR 也有一个相关问题的建议,Why are no Symbols loaded when remote debugging?,说要创建一个包含调试文件的文件夹,并在远程服务器上将环境变量 _NT_SYMBOL_PATH 指向它。
【讨论】:
感谢您的提示,我认为这是一个失败的原因。以上是关于WCF 远程调试的符号位置的主要内容,如果未能解决你的问题,请参考以下文章
使用 Amazon Web Services (EC2) 和 c# Windows Service/WCF 进行远程调试