“断点目前不会被击中。没有为此文档加载任何符号。” - .pdb 从错误的地方加载?

Posted

技术标签:

【中文标题】“断点目前不会被击中。没有为此文档加载任何符号。” - .pdb 从错误的地方加载?【英文标题】:“The breakpoint will not currently be hit. No symbols have been loaded for this document.” - .pdb loaded from wrong place? 【发布时间】:2012-02-19 10:57:07 【问题描述】:

我有著名的“断点当前不会被命中。没有为此文档加载任何符号。” - 问题并受到thread的启发:

我启动调试器,打开Debug -> Window -> Modules,右击程序集-> Symbol Load Information。它指向一个奇怪的地方:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET FilesmyProjectFolder\8df46672\bbaeb99e\assembly\dl3\c29c5e19\aa46dcf7_10dccc01myProject.pdb:已加载符号。`

当我删除myProjectFolder 时,它暂时为我解决了这个问题。但它仍然指向这个 .pdb - 文件(VS 删除后重新创建临时文件夹)。 我猜它应该指向 bin 目录中的 .pdb,就像在其他程序集中一样。我该如何解决这个问题?还是这是正常行为?

感谢任何提示...

编辑:它是一个 ASP.NET - 项目 (.NET 4.0),MVC 3。到目前为止没有包含 COM 库。我现在再次删除了上述目录,并再次以“断点当前不会......”结束。如果我打开模块窗口,符号状态显示“跳过加载符号。”对于所有程序集,除了App_global.asax.exot9a5x.dll。

编辑 2:网站配置为在 本地 IIS 7 上运行。如果我更改为 Visual Studio 开发服务器,调试工作正常。好像和IIS有关?

【问题讨论】:

如果这是一个 asp.net 项目,那么在大多数情况下,调试与启动项目不同的项目会由于各种原因导致问题。 您能否添加更多详细信息,例如这是什么类型的项目(控制台、Windows 应用程序等)以及您是否使用诸如 COM 之类的东西。我已经运行了很多实例进入这个问题,因为之前的 COM 注册未能取消注册。 ...添加了一些希望有用的信息。 可能由于某种原因,您没有为页面的这一部分声明调试。 ...跟pages关系不大 --> MVC. 【参考方案1】:

我回答了一个类似的问题,可能会解决您的问题。在发布设置中选中“排除生成的调试符号”是一个常见错误。看my answer。

【讨论】:

【参考方案2】:

确保您不仅安装了 VS2010,还安装了VS2010 Service Pack 1。

我尝试了所有发布的解决方案,包括重新安装 - 即使在没有成功的新计算机上!您需要服务包。得到它后,如果问题仍然存在,请尝试其他发布的解决方案。

来源:http://blogs.msdn.com/b/aseemb/archive/2012/09/08/not-able-to-run-unit-tests-when-visual-studio-2010-and-visual-studio-2012-are-installed-side-by-side.aspx

【讨论】:

【参考方案3】:

为了在 VS 2015 中解决这个问题,我必须:

    右键项目,属性->构建 点击高级,打开高级构建设置 将调试信息设置为“pdb-only”或“full”

当我弄乱了构建配置管理器并添加了我自己的时,问题就出现了。不知何故,这改变了项目中的调试信息设置。

【讨论】:

【参考方案4】:

要在 Web.config 中解决此问题,我只需添加 debug="true"

  <system.web>
    <compilation targetFramework="4.0" debug="true">

帮助我找到此解决方案的原因是在调试时查看了 Modules 窗口,发现对于我加载的 ASP.NET DLL,我有:二进制文件不是使用调试信息构建的。

【讨论】:

【参考方案5】:

IIS 7,Visual Studio 2012,发布到本地 IIS 并从 Visual Studio 调试。

出现问题是因为 Web 应用程序无法从 Temporary ASP.NET 文件夹中获取 PDB

在执行任何操作之前,重新启动 app_poolIIS

中用于您的 Web 应用程序

【讨论】:

在我的例子中,Visual Studio 对断点所在的实际行感到困惑。这个答案解决了这个问题。【参考方案6】:

另一个解决 javascript 文件断点问题的方法是清除 IE9 缓存。我在更新/保存 js 文件后遇到了这个问题。在我进入 Internet 选项并删除临时 Internet 文件之前,Visual Studio 2012 的调试器不会更新 .pdb。希望这可以节省一些时间。

【讨论】:

【参考方案7】:

只是说明我的问题,最后看起来有点傻,但我还是在恐慌中浪费了大约一个小时。

我必须卸载 nuget 才能升级它。在安装了新的 nuget 和我遇到断点错误之后的包之后。

事实证明,在这些安装过程中,我的发布设置丢失了我运行开发项目的特定端口。因为在过去的 4 个月里我已经习惯了那个端口号,所以我什至没有考虑它,但我一直以为我在看开发机器,它实际上并没有在那个端口上运行,我正在查看已经在我的浏览器中的缓存页面。德尔!

可能听起来很愚蠢,但如果它对某人有帮助的话。

快乐编码, 克

【讨论】:

我的项目也丢失了这个设置。不知道为什么......所以,你帮我看看正确的地方:)【参考方案8】:

原来我在启动调试器时已将配置设置为Release。当我将其更改为Debug 时,它按预期工作!

【讨论】:

同样如此,一个简单的问题 - 我在打开调试器时设置了“测试”配置! 我的不工作,我的配置设置为调试,所以我更改为发布并返回调试,它工作。 这对我有用。感谢您展示显而易见的东西(我总是想念)。

以上是关于“断点目前不会被击中。没有为此文档加载任何符号。” - .pdb 从错误的地方加载?的主要内容,如果未能解决你的问题,请参考以下文章