如何解决“当前不会命中断点。没有为此文档加载任何符号。”警告?
Posted
技术标签:
【中文标题】如何解决“当前不会命中断点。没有为此文档加载任何符号。”警告?【英文标题】:How do I remedy "The breakpoint will not currently be hit. No symbols have been loaded for this document." warning? 【发布时间】:2011-01-10 11:40:51 【问题描述】:一个 C# 桌面应用程序(在 Visual Studio Express/Community 版本上)可以工作,但 5 秒后它就不能工作了。
我尝试了以下方法:
确保在所有程序集上设置了调试配置、调试标志和完整的调试信息。 从我的整台机器中删除所有 bin 和 obj 文件夹以及与项目相关的所有 DLL 文件。 从头开始重新创建导致问题的项目。 重启。我在解决方案中有两个 Windows 窗体项目。其中一个加载调试信息,一个不加载。它们都引用了我试图在项目文件中以完全相同的方式获取调试信息的程序集。有什么想法吗?
我想在这里补充一下,当我回来查看这个问题时,主要是为了我自己,在加载程序集之前不会加载符号,并且在需要它之前不会加载程序集。如果断点位于仅在主程序集中的一个函数中使用的库中,则在调用该函数之前不会加载符号(并且它将显示断点未命中)。
【问题讨论】:
调试时,转到调试、Windows、模块视图。这将显示有关加载的模块和符号状态的信息。您可以右键单击一个模块并尝试从另一个位置加载符号。 Express 版没有模块视图。 关于在需要时才加载程序集的要点。调试器将显示断点不会被命中,但显示会改变/一旦加载程序集,你的断点就会被命中。解决此 UI 问题的一个俗气的解决方法是在程序开始时调用程序集以强制加载程序集。 我遇到了同样的问题,我注意到对于这个构建配置,我在 VS2015 中没有<DebugSymbols>true</DebugSymbols>
,我手动添加了它,它工作正常。
删除 .suo 文件可能已经解决了我项目中的这个丑陋问题
【参考方案1】:
一旦到达断点或使用Debug > Break All
,就开始调试,使用Debug > Windows > Modules
。您将看到加载到进程中的所有程序集的列表。找到您要为其获取调试信息的那个。右键单击它并选择符号加载信息。您将看到一个对话框,其中列出了它为程序集查找 .pdb 文件的所有目录。根据实际的 .pdb 位置验证该列表。确保它没有找到旧的。
在普通项目中,程序集及其 .pdb 文件应始终由 IDE 复制到与 .exe 相同的文件夹中,即项目的 bin\Debug 文件夹。如果您一直在使用它,请确保将其从 GAC 中删除。
【讨论】:
这个问题是关于速成版的,不幸的是,这个答案并不适用。实际上没有一个答案对我有用,我也尝试删除 Debug 文件夹并重建。 拯救生命的信息!谢谢!【参考方案2】:检查您是否不在发布中,而是在调试中。
调试时:
首先尝试通过右键单击项目来重建您的项目>重建 如果这不起作用,请尝试清理项目(鼠标右键单击项目>清理)
如果这不起作用,请检查:
-
鼠标右键单击您的项目
选择[属性]
选择[构建]标签
确保选中[Define DEBUG constant]和[Define TRACE constant]
确保未选中[优化代码]
点击构建标签页底部的[高级]按钮
确保 [Debug Info:] 设置为 [full]
点击[OK]并重建项目;-)
(第7步生成.pdb文件,这些是调试符号)
【讨论】:
确保 [Debug Info:] 设置为 [full] - 为我修复!我的项目设置了多个配置,我添加的新配置没有。 原来我在发布版本中。啧啧。【参考方案3】:只是一些简单的尝试 - 您可能已经尝试过了。 右键单击解决方案资源管理器中的解决方案,单击“清理解决方案”,这将删除与解决方案关联的所有已编译和临时文件。
重新构建解决方案并尝试再次调试。
我也遇到了解决方案中多个项目的断点问题 - 有些编译为 x86,有些编译为 x64。
【讨论】:
【参考方案4】:在调试/常规设置中禁用“仅我的代码”选项。
【讨论】:
要明确一点:在 VS 2017 中,此设置专门位于“调试”、“常规”窗格下的“工具”、“选项”对话框中(准确地说,没有“调试”窗格)。该复选框称为“仅启用我的代码”而不是“仅我的代码”。【参考方案5】:从Hans K 交叉发布此修复程序,我在类似的线程>> HERE << 上找到:
右击解决方案 --> 属性
查看Common Properties --> Startup Project
选择多个启动项目
选择开始对需要调试的项目执行操作。
【讨论】:
这还可以处理您尝试调试 WEB 项目的情况,该项目是在 VS 开发服务器上运行的 .NET 远程处理端点并显示“未加载符号”。 我注意到我实际上并没有开始我试图调试 facepalm 的项目。所以也要注意这一点,如果您有一个多项目启动配置,请确保包含您要调试的项目!【参考方案6】:选定的答案让我解决了我的问题。但我还需要做一些事情:
即使在下拉列表中选择了“调试”:
并在项目属性>构建:
Visual Studio 未将符号加载到特定项目。因此,在该下拉列表中,我选择了“配置管理器”,发现我的 Web 项目的设置不正确:
然后我将其设置为“调试”并开始生成.pdb
文件。
但是我需要手动复制 PDB 和 DLL 并放入 VS 正在查找的文件夹中(这里是所选答案对我有帮助的地方):
【讨论】:
我在release
模式下运行。谢谢!!
对我来说关键是没有选中“部署”框,因此构建后没有重新部署 pdb【参考方案7】:
有时,即使它给你这个错误,breakpoint
仍然会被击中,所以忽略这个错误。这在MVC web app
的Views
中经常发生。
【讨论】:
这实际上应该被投票到顶部的某个地方。我花了很多时间做上面的所有答案,但实际上断点会被击中。只需检查一下:)另外,那是一个 WPF 桌面应用程序。【参考方案8】:Debug
> Windows
> Modules
看看正在加载哪些模块让我朝着正确的方向前进。
在我的情况下,IIS Express 似乎正在从临时 ASP.NET 文件加载不同的 DLL。
解决方案?
-
浏览至
C:\Users\<YOUR USER>\AppData\Local\Temp\Temporary ASP.NET Files\vs
删除此目录中的所有内容!
【讨论】:
【参考方案9】:我可以通过简单地将“附加到进程”中的选项设置为“自动确定要调试的代码类型”选项来修复错误,如所附屏幕截图所示。
只需按照以下步骤操作:
从菜单栏转到调试 点击附加到进程 在附加到选项附近,点击选择按钮 选择代码类型窗口将出现 现在选择选项自动确定要调试的代码类型,然后单击“确定”按钮。【讨论】:
对于尝试了此页面上所有内容的其他人,我通过切换到“托管(v4.5,v4.0)代码”解决了我的问题!【参考方案10】:检查 bin/Debug 文件夹中是否缺少 .pbd 文件。如果是,则转到项目的“属性”,选择“构建”,然后在底部选择“高级”。在出现的新窗口中选择“调试信息”下的“完整”。这是我的问题并为我解决了。
【讨论】:
【参考方案11】:在我的情况下,在我的项目属性中检查了“优化代码”。这导致 VS 将我的程序集视为“不是我的代码”,反过来,它没有为它加载符号。
解决方案是取消选中此项。
【讨论】:
【参考方案12】:只需检查您的解决方案是否处于发布模式。
【讨论】:
【参考方案13】:尝试在 windows 中以管理员身份运行 Visual Studio。
【讨论】:
【参考方案14】:就我而言,我正在尝试在发布模式下进行调试。一旦我将其更改为调试模式。它的工作原理
【讨论】:
【参考方案15】:Debug ->
Options ->
General ->
取消选中“Enable Just My Code
”标记
这对我有用。
【讨论】:
【参考方案16】:您需要在编译器设置中启用“生成调试信息”
【讨论】:
【参考方案17】:检查您的Solution Configuration
下拉列表。确保选择Debug
,而不是Release
。
【讨论】:
【参考方案18】:我尝试了上面提到的所有方法,但没有任何效果。 [清理解决方案,并检查 PDB 文件等]
即使发布相同的解决方案也无法解决问题。
然后我又回到了我通常做的事情来解决(愚弄这个顽固的 Visual Studio)
我所做的只是故意更改代码并发布解决方案。 然后我恢复了更改并再次发布。
瞧 [PDB 文件摆脱邪恶的灵魂].. 不是一个聪明的解决方案,但这确实有效.. :-|
【讨论】:
【参考方案19】:我们找到了问题的原因。此代码使用 .aspx 文件的 Page 指令中的“CodeBehind”属性,而不是“CodeFile”属性(ASP.NET 2.0 及更高版本)。经过几天的绝望,一个简单的搜索和替换解决了这个问题。
【讨论】:
【参考方案20】:Microsoft Visual Studio Express 2013 版中不存在“开始调试,调试 + Windows + 模块”选项。
在工具选项调试中取消选中“使用托管兼容模式”可修复此问题。
【讨论】:
【参考方案21】:仅限 Web 应用程序 (IIS Express):
右键单击 IIS Express 托盘并关闭 IIS。 清洁解决方案【讨论】:
【参考方案22】:-
清理解决方案并重建
检查配置是否设置为调试
确保 PDB 文件位于它自己的 Debug 文件夹中
从“调试”菜单中单击“启用所有断点”
【讨论】:
【参考方案23】:这些答案都没有解决我的问题。基于停止的项目实际上不是加载的项目,我尝试了另一件事。我发现 Hans Passant 写道,我想停止调试器的 .dll 和在 .exe 文件附近复制的相关 .pdb 文件。这些文件的日期较旧,所以我认为它们没有在运行时更新。我手动删除了它们,Visual Studio 创建了另一对并将这对新的一对放在 .exe 附近。现在断点起作用了!
也许 Visual Studio 无法复制和替换 .exe 附近的现有文件(.dll 和 .pdb),因为那里还有另一个文件。因此,如果我手动删除,那么 VS 可以在 .exe 附近创建一个新的。
我认为另一个更改(检查等 - 来自另一个答案)触发了某些事情,Visual Studio 将 dll 和 pdb 从项目文件夹复制并替换到 exe 附近的文件夹,所以这是一个解决方案。
我认为问题的根本原因是Visual Studio在运行时使用了另一个文件,没有来自项目的文件,带有停止。
也许这个答案可以帮助某人!
【讨论】:
【参考方案24】:检查以下两个设置是否在 Visual Studio 中相同:
右击测试项目,进入Properties,Build选项卡,查看Platform target
我的都设置为“任何 CPU”,所以 x64
在主菜单栏上,转到测试、测试设置、默认处理器架构
我的设置为 X86
将其更改为 X64 以匹配上述设置使内置的 Visual Studio 菜单“调试测试”工作并命中先前被忽略的断点,并显示“断点当前不会打。没有为此文档加载任何符号”。
更新:
对于 Visual Studio 2019,菜单进行了一些移动:
【讨论】:
【参考方案25】:而不仅仅是做所有这些事情
关闭并重新打开
解决问题的方法
【讨论】:
在 Microsoft Visual Studio 2013 中为我工作过:文件 > 关闭解决方案然后文件 > 打开解决方案(应该预加载它所在的相同文件夹)。断点立即从黄旗变为圆形红色。所以谢谢。【参考方案26】:我有类似的问题,我做了以下事情: Debug=>Options=>General => 去掉“Enable Just My Code”的复选标记 这对我有用..
【讨论】:
【参考方案27】:为了清楚起见,需要检查的事项:确保将配置设置为“调试”而不是“发布”。您可以在“发布”模式下调试启动项目,但不能调试引用的类库。
【讨论】:
【参考方案28】:项目属性(然后选择您的构建配置)> 构建选项卡 > 高级... > 调试信息(下拉菜单)
设置为 'all' 或 'pdb-only' 然后重建
【讨论】:
我只做了 pdb_only,也清理并重新启动浏览器【参考方案29】:我知道我迟到了几年,但我认为我做错了什么并按照上述步骤操作,然后我意识到我错误地将解决方案配置设置为“发布”:)
【讨论】:
我可以投票 10K 次吗?最糟糕的是,我想我现在已经在谷歌上搜索了 10 次,每次都是同样的愚蠢错误。也许微软可以向用户提示?【参考方案30】:这花了我一段时间尝试了上面的其他选项,但由于某种奇怪的原因调试停止工作。
工具->选项->调试->常规->(取消勾选)“要求源文件与原始版本完全匹配”选项
【讨论】:
以上是关于如何解决“当前不会命中断点。没有为此文档加载任何符号。”警告?的主要内容,如果未能解决你的问题,请参考以下文章