如何解决"断点当前不会被命中.此文档没有加载任何符号." 警告?

Ins*_*ter 1456 .net c# debugging breakpoints visual-studio

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

我尝试了以下内容.

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

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


我想补充在这里,主要是为我自己,当我回过头来审查这个问题,该符号不加载,直到组件加载,并且没有加载组件直到需要它.如果断点位于仅在主程序集中的一个函数中使用的库中,则在调用该函数之前,将不会加载符号(并且将显示断点未被命中).

Han*_*ant 1007

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

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

  • 问题是关于快递版本,不幸的是,这个答案不适用于此.实际上没有一个答案对我有用,我也尝试删除Debug文件夹并重建. (21认同)
  • 实际上,这就是我的问题.我们有一个后期编译,使其不被视为"用户代码"...现在,我必须看到这是什么,但我确实没有后编译修改,符号被加载.@Hans谢谢你,给我留了一些好的时间!*发送虚拟啤酒* (4认同)
  • Microsoft Visual Studio Express 2013 for Web没有"调试Windows模块"选项.在这种情况下如何使用修复此问题? (3认同)
  • 作为提示,打开您的异常,使其在您想要的地方中断(如果您无法在流程的开头设置断点)...然后您按照Han推荐的Debug> Windows> Modules的过程进行操作.查找您尝试进入的项目并查看PATH.如果它说"C:\ windows\assembly"那么它指向一个GAC dll而不是项目...... (2认同)
  • 我将我的解决方案的活动解决方案配置设置为Release,将其更改回Debug以解决我的问题.这个答案帮助我"记住"要寻找什么 (2认同)
  • 当然,您必须启用非托管调试才能在模块列表中看到此类DLL. (2认同)
  • 如果我的库 .pdb 文件位于主项目的 bin\Debug 中,但在模块中我看不到此程序集,我该怎么办?我无法调试库... /sf/ask/5135194991/?noredirect=1#comment129554854_73359928 (2认同)

juF*_*uFo 388

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

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

  1. 用鼠标右键单击您的项目
  2. 选择[属性]
  3. 选择[Build]选项卡
  4. 确保选中[Define DEBUG constant][Define TRACE constant]
  5. 单击"构建"选项卡页面底部的[高级]按钮
  6. 确保[Debug Info:]设置为[full]
  7. 单击[确定]并重建项目;-)

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

  • 确保[Debug Info:]设置为[full] - 为我修复它!我在我的项目上设置了多个配置,我添加的新配置没有这个设置. (37认同)
  • 事实证明我在发布版本中.啧. (35认同)
  • 我还必须确保未选中“属性>构建>优化代码”。 (3认同)
  • 如果你有一个带有本机启动的混合C++/C#项目,请确保它的项目的Debugging> Debugger Type是Mixed. (2认同)

Pat*_*ick 266

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

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

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

  • 你是如何在解决方案中修复多个项目的断点的 - 有些编译为x86,有些编译为x64? (5认同)
  • 如果您运行的是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文件夹. (3认同)
  • @jonathan Wood - 我大多同意这一点.但在极少数情况下,Rebuild All会产生稍微不同的结果 - 我知道我有时会看到奇怪的差异.看看这里有一些有趣的讨论:http://stackoverflow.com/questions/1247457/difference-between-rebuild-and-clean-build-in-visual-studio (2认同)

sub*_*tal 223

禁用"调试/常规"设置中的"仅我的代码"选项.

  • 需要明确的是:在VS 2017中,此设置专门位于Debugging,General窗格下的Tool,Options对话框中(没有"Debug"窗格,准确无误).该复选框名为"启用我的代码"而不是"仅我的代码". (18认同)
  • 是的,在具有自定义构建配置的Windows Phone 8项目中,这就是为我做的. (2认同)
  • 为Windows Phone 8.1和VS Community 2015工作. (2认同)

jp2*_*ode 147

跨发布此修复汉斯ķ我上相似主题,发现>> <<这里:

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

查看Common Properties - > Startup Project

选择多个启动项目

选择需要调试的项目的"开始"操作.

  • 这也处理了您尝试调试WEB项目的情况,该项目是在VS开发服务器上运行的.NET远程端点并显示"未加载符号". (7认同)

fab*_*tto 61

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

即使在下拉列表中选择了"调试":

在此输入图像描述

在项目Properties> Build中:

在此输入图像描述

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

在此输入图像描述

在此输入图像描述

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

在此输入图像描述


the*_*eos 42

我能够通过简单地将"附加到进程"中的选项设置为"自动确定要调试的代码类型"选项来修复错误,如附带的屏幕截图所示.

只需按照以下步骤操作:

  • 从菜单栏转到" 调试 "
  • 单击Attach to Process
  • 在" 附加到"选项附近,单击" 选择"按钮
  • 将出现" 选择代码类型"窗口
  • 现在选择" 自动确定要调试的代码类型 "选项,然后单击"确定"按钮.

修复了调试错误

  • 对于那些尝试过本页所有内容的人,我通过切换到"托管(v4.5,v4.0)代码"修复了我的问题! (10认同)

Jam*_*s S 42

Debug> Windows> Modules看到正在加载的模块是什么让我在正确的方向.

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

解决方案?

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

  • 这对我有用,除了在我的情况下,我必须清除的目录是C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\vs \ (8认同)

Ser*_*gan 39

有时,即使它给你这个错误,breakpoint仍然会被击中,所以只需忽略错误.这经常发生在Views一个MVC web app.

  • 这实际上应该被推到顶部的某个地方.我花了很多时间做上面的所有答案,但断点实际上会被击中.只需检查:)此外,这是一个WPF桌面应用程序. (7认同)
  • aspx似乎是按需编译的,因此只有在需要aspx页面后才能获得debuging信息 (4认同)

Arn*_*ekk 39

检查bin/Debug文件夹中是否缺少.pbd文件.如果是,则转到项目的"属性",选择"构建",然后选择底部的"高级".在出现的新窗口的"调试信息"下选择"完整".这是我的问题,并为我解决了.

显示在哪里找到设置

  • 解决了.net核心项目中的问题 (2认同)

San*_*dra 29

在我的案例中,在我的项目属性中检查了"优化代码".这导致VS将我的程序集视为"不是我的代码",反过来,它没有为它加载符号.

解决方案是取消选中此项. 优化代码的位置复选框

  • 这也是我的问题,我一个接一个地完成了上述所有解决方案,没有任何效果. (2认同)

Tin*_*ara 25

只需检查您的解决方案是否处于发布模式.


And*_*ndy 22

尝试在Windows中以管理员身份运行visual studio.


Adi*_*Sai 21

在我的情况下,我试图在relase模式下调试.一旦我将其更改为调试模式.它的工作


小智 15

您需要在编译器设置中启用"生成调试信息"

  • 它与juFo的答案相同 - 项目>属性>构建>高级>调试信息>完整(或仅限pdb) (10认同)

Ran*_*ner 11

  1. 通过在下拉菜单中进行选择来确保您在Debug或不在,如下图所示。releasedebug

在此输入图像描述

  1. 然后,尝试通过在解决方案资源管理器窗口中的解决方案上单击鼠标右键并选择来清理项目Clean solution

在此输入图像描述

  1. 然后通过在解决方案资源管理器窗口中的解决方案上单击鼠标右键并选择来重建您的解决方案Rebuild solution

在此输入图像描述


cjo*_*080 10

我们找到了问题的原因.此代码使用.aspx文件的Page指令中的"CodeBehind"属性,而不是"CodeFile"属性(ASP.NET 2.0及更高版本).经过几天的绝望,简单的搜索和替换解决了这个问题.


And*_*rus 10

Microsoft Visual Studio Express 2013版中不存在"开始调试,调试+ Windows +模块"选项.

在工具选项中取消选中"使用托管兼容模式"调试修复此问题.


zs2*_*020 10

检查您的Solution Configuration下拉列表。确保选择Debug,而不是Release


小智 9

  1. 清洁解决方案并重建
  2. 检查配置是否设置为Debug
  3. 确保 PDB 文件在它自己的 Debug 文件夹中
  4. 从调试菜单中单击启用所有断点


Mah*_*esh 8

我尝试了上面提到的一切,但没有任何效果. [清洁解决方案,并检查PDB文件等]

即使发布相同的解决方案也无法解决问题.

然后我回到我通常要解决的问题(愚弄这个顽固的Visual Studio)

我所做的只是故意改变代码并发布解决方案.然后我恢复了变化并再次发布.

Voila [PDB文件摆脱邪恶的精神] ..不是一个聪明的决议,但这确实有效..: - |


Mik*_*ike 8

检查 Visual Studio 中以下两个设置是否相同:

右键单击测试项目,转到属性,构建选项卡,然后查看平台目标

我的都设置为“任何 CPU”所以x64

在此处输入图片说明

在主菜单栏上,转到测试、测试设置、默认处理器架构

我的设置为X86

在此处输入图片说明

将其更改为X64以匹配上述设置使内置的 Visual Studio 菜单“调试测试”工作并命中先前被忽略的断点,并显示消息“当前不会命中断点。尚未为该文档加载任何符号”。

更新:

对于Visual Studio 2019,菜单已经移动了一点: 在此处输入图片说明


小智 7

我正在将 C# 应用程序与静态库集成,使用VS10- 这是我的新手。

我编写了一个托管代码dll来连接它们。我可以在除了static lib.

我收到上述消息 - 尚未为此文档加载任何符号。我尝试了上面的许多建议。

我可以看到符号没有被加载。我终于注意到配置调试、启用非托管代码调试复选框。

这允许我在函数中设置断点static lib


小智 6

这些答案都没有解决我的问题.我尝试了另一件事,事实上带停止的项目实际上并不是加载的项目.我发现Hans Passant写了.dll我想要停止调试器和在.exe文件附近复制的关联.pdb文件.这些文件的日期较旧,所以我认为它们在运行时没有更新.我手动删除它们,Visual Studio创建另一对并将这个新对放在.exe附近.现在破坏了!

也许Visual Studio无法复制和替换.exe附近的现有文件(.dll和.pdb),因为还有另一个.因此,如果我手动删除,那么VS可以在.exe附近创建新的.

我认为另一个更改(检查等 - 从另一个答案)触发了一些东西,Visual Studio复制并将dll和pdb从项目文件夹替换为exe附近的文件夹,这是一个解决方案.

我认为问题的根本原因是Visual Studio在运行时使用另一个文件,没有来自项目的文件,带有stop.

也许这个答案可以帮助别人!


Sai*_*ana 6

要检查的事项要明确:确保将配置设置为"调试"而不是"释放".您可以在"发布"模式下调试启动项目,但不能在引用的类库中调试.


Chr*_*rdt 6

仅限Web应用程序(IIS Express):

  • 右键单击IIS Express Tray并关闭IIS.
  • 清洁解决方案

IIS托盘


tfa*_*tfa 6

这花了我一段时间尝试了上面的其他选项,并出于一些奇怪的原因调试停止工作.

工具 - >选项 - >调试 - >常规 - >(取消)"要求源文件与原始版本完全匹配"选项


小智 6

调试->选项->常规->取消选中“ Enable Just My Code”的标记

这对我有用。


use*_*700 5

我在x86(或x64)中重建整个解决方案(包括引用的项目)时遇到了同样的问题

即使我从Configuration Manager(Build-> ConfigManager)将所有项目都设置为x86,也没有将某些项目设置为x86。

因此,只需确保右键单击该项目并按照

项目->属性->调试选项卡,验证配置和平台。


小智 5

我已经仔细阅读了上面的所有答案,但没有一个能解决我的问题。

就我而言,我正在编译一个类库 (DLL)。在 Debug -> Modules 中似乎没有加载模块,所以我什至无法手动加载符号。

我的解决方案是将此行添加到我的代码中:

System.Diagnostics.Debugger.Launch();
Run Code Online (Sandbox Code Playgroud)

到达此代码后,将触发异常并且 .NET Framework 会显示一个对话框,询问您要使用哪个 Visual Studio(即 VS 2008 的新实例、VS 2013 的新实例等)来调试程序。您可以选择加载了项目的现有 VS 实例。这会将进程附加到您的 VS 会话并加载所有符号,现在您可以调试您的项目。

当然,编译必须使用Debug配置完成,而不是Release。


Sin*_*tic 5

项目属性(然后选择您的构建配置)>构建选项卡>高级...>调试信息(下拉列表)

设置为'all'或'pdb-only'然后重建


kse*_*lva 5

而不是仅仅做所有这些事情

关闭并重新打开

它将解决问题的解决方案

  • 在VS 2015中并不总是有效并且不起作用. (8认同)

Nei*_*ker 5

我知道我已经晚了几年,但是我认为我做错了一些事情,按照上述步骤进行操作,然后我才意识到我会错误地将解决方案配置设置为“发布” :)


小智 5

我遇到了类似的问题,并且执行了以下操作:Debug => Options => General =>取消选中“启用我的代码”的复选标记。


mel*_*ent 5

在尝试了一系列这些之后,最终对我有用的是:

在 中Debug > Options > General,取消选中Enable Edit and Continue


归档时间:

查看次数:

1143402 次

最近记录:

6 年,2 月 前