题 我如何解决“断点当前不会被击中。此文档未加载任何符号。“警告?


快递版C#桌面应用程序。工作后5秒钟没有工作。

我尝试了以下内容。

  • 确保在所有程序集上设置调试配置,调试标志和完整调试信息。
  • 从我的整个计算机中删除所有bin和obj文件夹以及与项目相关的所有DLL。
  • 从头开始重新创建导致问题的项目。
  • 重启。

我在解决方案中有两个WinForms项目。其中一个加载调试信息,一个不加载。它们都指的是我试图以完全相同的方式在项目文件中获取调试信息的程序集。有任何想法吗?


我想在这里添加,主要是为了我自己回来审查这个问题,在装入程序集之前不加载符号,并且在需要之前不加载程序集。如果断点位于仅在主程序集中的一个函数中使用的库中,则在调用该函数之前,将不会加载符号(并且将显示断点未被命中)。


1149


起源


调试时,转到Debug,Windows,Modules视图。这将显示有关已加载模块和符号状态的信息。您可以右键单击模块并尝试从其他位置加载符号。 - Polyfun
Express版没有模块视图。 - Instance Hunter
关于在需要之前未加载的组件的好处。调试器将显示断点不会被命中,但显示将更改/加载程序集后将触发断点。这个UI问题的一个俗气的解决方法是在程序启动时调用程序集以强制加载程序集。 - Tim Coker
我有同样的问题,我注意到,对于这种构建配置,我没有 <DebugSymbols>true</DebugSymbols> 在VS2015下,我手动添加它,它工作正常。 - kuskmen
删除.suo文件可能已解决了我项目中的这个丑陋问题 - Roland


答案:


一到达断点或使用,就开始调试 Debug > Break All, 使用 Debug > Windows > Modules。您将看到加载到流程中的所有程序集的列表。找到要获取调试信息的那个。右键单击它并选择符号加载信息。您将看到一个对话框,其中列出了查找程序集的.pdb文件的所有目录。根据实际的.pdb位置验证该列表。确保它找不到旧的。

在正常项目中,程序集及其.pdb文件应始终由IDE复制到与.exe相同的文件夹中。项目的bin \ Debug文件夹。如果您一直在玩GAC,请务必从GAC中删除一个。


843



实际上,这就是我的问题。我们有一个后期编译,使其不被视为“用户代码”...现在,我必须看到这是什么,但我确实没有后编译修改,符号被加载。 @Hans谢谢你,给我留了一些好的时间! 发送虚拟啤酒 - eglasius
问题是关于快递版本,不幸的是,这个答案不适用于此。实际上没有一个答案对我有用,我也尝试删除Debug文件夹并重建。 - Nicolas Raoul
我不明白你的意思是“开始调试,调试+ Windows +模块” - Blessed Geek
Microsoft Visual Studio Express 2013 for Web没有“调试Windows模块”选项。在这种情况下如何使用修复此问题? - Andrus
作为提示,打开您的异常,以便它在您想要的地方中断(如果您无法在过程的开头放置断点)...然后您按照Han推荐的Debug> Windows> Modules的过程进行操作。查找您尝试进入的项目并查看PATH。如果它说“C:\ windows \ assembly”那么它指向一个GAC dll而不是项目...... - Andy Danger Gagne


首先尝试通过右键单击项目>重建来重建项目 如果这不起作用,请尝试清理项目(在项目上单击鼠标右键>清除)

如果这不起作用,请检查:

  1. 用鼠标右键单击你的 项目
  2. 选择 [属性]
  3. 选择 [建立] 标签
  4. 确保 [定义DEBUG常量] 和 [定义TRACE常数] 检查
  5. 点击 [高级] “构建”选项卡页面底部的按钮
  6. 确保这一点 [调试信息:] 被设定为 [充分]
  7. 点击 [确定]并重建 该项目 ;-)

(步骤6生成.pdb文件,这些是调试符号)


267



确保[Debug Info:]设置为[full] - 为我修复它!我在我的项目上设置了多个配置,我添加的新配置没有这个设置。 - Chiefy
事实证明我在发布版本中。啧。 - pandalion98
如果你没有 build 标签,你也可以去 compile > Advanced compile options > steps 4 - 7。这样做对我而言。 - DJMcMayhem
如果你只使用一个项目,那就太好了,但是我已经有20个并且活动进程会遍历所有这些项目,具体取决于它运行的具体过程。 - CSS
如果您有一个带有本机启动的混合C ++ / C#项目,请确保它的项目的Debugging> Debugger Type是Mixed。 - Bill Hoag


只是简单的尝试 - 你可能已经尝试过了。 右键单击解决方案资源管理器中的解决方案,单击 “清理解决方案”,这将删除与解决方案关联的所有已编译和临时文件

重建解决方案并尝试再次调试。

我在解决方案中也遇到了断点多个项目的问题 - 一些编译为x86,一些编译为x64。


237



你是如何在解决方案中修复多个项目的断点的 - 一些编译为x86,一些编译为x64? - Richard Li
如果您运行的是IISExpress(或Azure模拟器),则如果AssemblyVersion为1.0.0.0,则C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files \ root中的文件可能无法更新。确保它与1.0。*类似,以便每次构建Web项目时都会生成新版本。 Clean Solution不会清除临时Internet文件夹。 - Michael Lang
我的vs 2015没有“清洁解决方案”命令。 - Doug Null
这与执行Rebuild All完全相同。 - Jonathan Wood
@jonathan Wood - 我大多同意这一点。但在极少数情况下,Rebuild All会产生稍微不同的结果 - 我知道我有时会看到奇怪的差异。看看这里有一些有趣的讨论: stackoverflow.com/questions/1247457/... - Patrick


禁用“调试/常规”设置中的“仅我的代码”选项。


180



是的,在具有自定义构建配置的Windows Phone 8项目中,这就是为我做的。 - GONeale
这是我在独立IIS服务器上进行远程调试时所需的解决方案。 - JasCav
在尝试了很多事情之后,这是唯一对我有用的解决方法。非常感谢! - equisde
为Windows Phone 8.1和VS Community 2015工作。 - Fabiano Araujo
需要明确的是:在VS 2017中,此设置专门位于“调试”,“常规”窗格下的“工具”,“选项”对话框中(没有“调试”窗格,准确无误)。该复选框名为“启用我的代码”,而不是“仅我的代码”。 - Jazimov


交叉发布此修复程序 汉斯K. 我在类似的线程上找到了 >>这里<<

右键单击解决方案 - >属性

查看Common Properties - > Startup Project

选择多个启动项目

选择需要调试的项目的“开始”操作。


124



这也处理了您尝试调试WEB项目的情况,该项目是在VS开发服务器上运行的.NET远程端点并显示“未加载符号”。 - D-Sect
这为我修好了。我认为之前sombody曾尝试将调试附加到本地IIS服务器,而不是Visual Studio使用的IIS调试版本。 - Dowlers
谢谢!我对此很疯狂。这很好用。 - Matt Cashatt
如果您删除了.suo文件,则可能会丢失此处选择的解决方案设置,并且必须再次设置它们 - Redeemed1
就是这样!谢谢!! - starmandeluxe


选定的答案让我解决了我的问题。但我需要做更多的事情:

即使在下拉列表中选择了“Debug”:

enter image description here

在项目Properties> Build中:

enter image description here

Visual Studio未将符号加载到特定项目。所以在该下拉列表中我选择“Configuration Manager”并看到我的web项目的设置不正确:

enter image description here

enter image description here

然后我将其设置为“Debug”并开始生成 .pdb 文件。  我需要手动复制PDB和DLL并放入VS正在寻找的文件夹(这里是所选答案帮助我的地方):

enter image description here


45



我跑进来了 release 模式。谢谢 !! - Dipak Telangre
关键是我没有选中'Deploy'框,因此pdb在构建后没有重新部署 - Ben


Debug > Windows > Modules 看看正在加载哪些模块让我朝着正确的方向前进。

在我的例子中,IIS Express似乎正在从临时ASP.NET文件加载不同的DLL。

解决方案?

  1. 浏览到 C:\Users\<YOUR USER>\AppData\Local\Temp\Temporary ASP.NET Files\vs
  2. 删除此目录中的所有内容!

36



这是我的问题,该文件夹必须已经装满了已作为首选项加载的已损坏的DLL。 - gburton
这对我有用,除了在我的情况下,我必须清除的目录是C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files \ vs \ - Andy
我有一个类似的问题,我已经安装了这个应用程序,它正在加载该DLL而不是我的项目中没有关联的PDB文件的DLL。卸载旧应用程序后,问题已解决。谢谢! - Lenny K
这也适用于完整的IIS。 - Kevin Kuszyk