“断点目前不会被击中。没有为此文档加载任何符号。” - .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_pool 在 IIS
中用于您的 Web 应用程序【讨论】:
在我的例子中,Visual Studio 对断点所在的实际行感到困惑。这个答案解决了这个问题。【参考方案6】:另一个解决 javascript 文件断点问题的方法是清除 IE9 缓存。我在更新/保存 js 文件后遇到了这个问题。在我进入 Internet 选项并删除临时 Internet 文件之前,Visual Studio 2012 的调试器不会更新 .pdb。希望这可以节省一些时间。
【讨论】:
【参考方案7】:只是说明我的问题,最后看起来有点傻,但我还是在恐慌中浪费了大约一个小时。
我必须卸载 nuget 才能升级它。在安装了新的 nuget 和我遇到断点错误之后的包之后。
事实证明,在这些安装过程中,我的发布设置丢失了我运行开发项目的特定端口。因为在过去的 4 个月里我已经习惯了那个端口号,所以我什至没有考虑它,但我一直以为我在看开发机器,它实际上并没有在那个端口上运行,我正在查看已经在我的浏览器中的缓存页面。德尔!
可能听起来很愚蠢,但如果它对某人有帮助的话。
快乐编码, 克
【讨论】:
我的项目也丢失了这个设置。不知道为什么......所以,你帮我看看正确的地方:)【参考方案8】:原来我在启动调试器时已将配置设置为Release
。当我将其更改为Debug
时,它按预期工作!
【讨论】:
同样如此,一个简单的问题 - 我在打开调试器时设置了“测试”配置! 我的不工作,我的配置设置为调试,所以我更改为发布并返回调试,它工作。 这对我有用。感谢您展示显而易见的东西(我总是想念)。以上是关于“断点目前不会被击中。没有为此文档加载任何符号。” - .pdb 从错误的地方加载?的主要内容,如果未能解决你的问题,请参考以下文章