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 进行远程调试

HTTP 无法注册 URL(远程调试)

GDB远程调试,好像找不到符号

找不到远程调试 Azure Functions 符号

远程调试 .Net 应用程序“没有为此文档加载任何符号”时出现问题。

VS 2010 远程调试器断点当前不会被命中。没有为此文档加载任何符号