我该如何补救“断点不会被击中。 没有符号已经加载这个文件。“警告?

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

我尝试了以下。

  • 确保在所有程序集上都设置了debuggingconfiguration,debugging标志和完整debugging信息。
  • 从我的整个机器上删除所有bin和obj文件夹以及与项目相关的所有DLL。
  • 重新创build从头开始的项目。
  • 重启。

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


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

开始debugging,一旦到达断点或者使用Debug > Break All ,使用Debug > Windows > Modules 。 您将看到加载到进程中的所有程序集的列表。 find您想获取debugging信息的人。 右键单击它并select符号加载信息。 您将得到一个对话框,其中列出了查找该程序集的.pdb文件的所有目录。 根据实际的.pdb位置validation该列表。 确保它没有find一个旧的。

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

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

做一个解决scheme的重build,并尝试再次debugging。

我也遇到了一个解决scheme中的多个项目的断点麻烦 – 一些编译为x86,一些编译为x64。 这是你的设置?

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

如果这不起作用检查这个:

  1. 用鼠标右键点击你的项目
  2. select[属性]
  3. select[Build]选项卡
  4. 确保选中[Define DEBUG constant][Define TRACE constant]
  5. 点击Build页面底部的[Advanced]button
  6. 确保[debugging信息:]设置为[完整]
  7. 点击[确定]并重build项目;-)

(第6步生成.pdb文件,这些是debugging符号)

在debugging/常规设置中禁用“只是我的代码”选项。

交叉发布这个修复从汉斯钾 ,我发现在类似的线程>> HERE << :

右键点击解决scheme – >属性

在通用属性 – >启动项目下查找

select多个启动项目

select需要debugging的项目上的“启动”操作。

感谢汉斯!

Debug > Windows > Modules来查看正在加载哪些模块使我在正确的方向。

在我的情况下,IIS Express似乎正在从临时的ASP.NET文件中加载一个不同的DLL。

解决scheme?

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

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

即使在下拉菜单中select“debugging”:

在这里输入图像描述

并在项目“属性”>“生成”中:

在这里输入图像描述

Visual Studio没有将符号加载到特定的项目。 所以在下拉列表中select“configurationpipe理器”,看到我的web项目的设置是不正确的:

在这里输入图像描述

在这里输入图像描述

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

在这里输入图像描述

我可以通过简单地将“附加到进程”中的选项设置为“自动确定要debugging的代码types”选项来修复错误,如附图所示。

只需按照以下步骤操作:

  • 从菜单栏转到debugging
  • 点击附加到进程
  • 在“ 附加到”选项旁边,单击“ select”button
  • select代码types窗口将出现
  • 现在select自动确定要debugging的代码的types选项,然后单击确定button。

修复了调试错误

有时,即使它给了你这个错误,断点仍然被打,所以只是忽略错误。 这在MVCnetworking应用程序的视图中经常发生。

尝试在Windows中以pipe理员身份运行Visual Studio。

在我的情况下,我的项目属性中选中“优化代码”。 这导致VS看到我的程序集“不是我的代码”,反过来,它没有加载它的符号。

解决的办法是取消这一点。 优化代码复选框的位置

只需检查您的解决scheme是否处于释放模式。

我注意到.pdb文件没有在项目的bin文件夹中生成。 我去了项目的属性,select“build设”,然后“高级”。 在popup的新对话框中,我select了“debugging信息”属性下的“全部”,这为我解决了这个问题。

在这里输入图像描述

我们find了我们问题的原因。 此代码使用.aspx文件的Page指令中的“CodeBehind”属性而不是“CodeFile”属性(ASP.NET 2.0及更高版本)。 经过几天的绝望,一个简单的search和replace解决了这个问题。

您需要在编译器设置中启用“生成debugging信息”

我尝试了上面提到的一切,但没有任何工作。 [清理解决scheme,并检查PDB文件等]

即使发布相同的解决scheme也不能解决问题。

然后我回到我平常所要解决的问题上(愚弄这个固执的Visual Studio)

我所做的只是对代码进行有意的更改并发布解决scheme。 然后我恢复了这个改变并再次发表。

Voila [PDB文件摆脱了邪恶的精神] ..不是一个聪明的决议,但这没有工作..: – |

Microsoft Visual Studio Express 2013版中不存在“开始debugging,debugging+ Windows +模块”选项。

在工具选项debugging中取消选中“使用托pipe兼容模式”修复了这个问题。

要检查的事情要清楚:确保你的configuration设置为“Debug”而不是“Release”。 您可以在“发布”模式下debugging启动项目,但不能调用引用的类库。

而不是只做所有这些事情

closures并重新打开

它将解决这个问题的解决scheme

这些答案都没有解决我的问题。 我尝试了另外一件事情,那就是停止的项目实际上并不是被加载的项目。 我发现Hans Passant写道,我想停止debugging器的.dll文件以及在.exe文件附近复制的关联.pdb文件。 那些文件有一个较旧的date,所以我认为他们没有在运行时更新。 我手动删除它们,Visual Studio创build另一对,并把这个新的对附近的.exe。 现在的断点工作!

也许Visual Studio不能复制和REPLACE现有的文件(.dll和.pdb)在.exe附近,因为那里有另一个。 所以,如果我手动删除,VS可以创build一个新的附近.exe。

我认为另一个更改(检查等等 – 从另一个答案)触发了一些事情,Visual Studio复制并将dll和pdb从项目文件夹replace到exe文件夹附近的文件夹,所以这是一个解决scheme。

我认为问题的根本原因是Visual Studio在运行时使用另一个文件,没有从项目中的文件,停止。

也许这个答案帮助别人!

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

  • 右键单击IIS Express Tray并closuresIIS。
  • 清洁解决scheme

IIS托盘

我正在使用VS10将一个C#应用程序与一个静态库集成在一起 – 这是我所熟悉的。 我写了一个托pipe代码DLL来连接它们。 除了静态库之外,我可以设置断点。 我得到了上述消息 – 没有符号已经加载这个文件。 我尝试了上面的许多build议。 我可以看到这些符号没有被加载。 我终于注意到一个checkboxconfigurationdebugging,启用非托pipe代码debugging。 这允许我在静态lib函数中设置断点。

对于ASP.Net应用程序,请检查该网站的属性,ASP.NET选项卡。 确保select了正确的ASP.NET版本。

我也有同样的问题,我在x86(或x64)重build整个解决scheme(包括参考项目)

即使我从Configuration Manager(Build-> ConfigManager)将所有项目设置为x86,我的一些项目werent设置为x86。

所以只要确保右键单击项目 – >属性 – >debugging选项卡,validationconfiguration和平台。

我仔细阅读了上面的所有答案,但是他们没有一个解决了我的问题。

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

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

 System.Diagnostics.Debugger.Launch(); 

一旦达到这个代码,就会触发一个exception,并且.NET Framework显示一个对话框,询问你想用哪个Visual Studio(VS 2008的新实例,VS 2013的新实例等)来debugging程序。 您可以在加载项目的情况下selectVS的现有实例。 这将把进程附加到你的VS会话并加载所有的符号,现在你可以debugging你的项目。

当然,编译必须使用Debugconfiguration,而不是Release。

项目属性(然后select你的构buildconfiguration)>构build选项卡>高级…>debugging信息(下拉菜单)

设置为“all”或“pdb-only”,然后重新生成

这花了我一会儿,尝试了上面的其他选项,出于一些奇怪的原因,debugging停止工作。

工具 – >选项 – >debugging – >常规 – >(不要)“要求源文件完全匹配原始版本”

这发生在我复制粘贴另一个webservice asmx文件到一个现有的web服务,导致同样的错误,当试图debugging最近添加的服务,能够debugging我不得不开始没有debugging,然后附加到过程。 它的奇怪,但它是唯一的方式,我发现可以debugging。

我尝试了所有这些,不能让我的突破点工作…

我做了什么来解决这个问题

在我的断点没有打到的页面中,我select了文件夹>添加现有项目,然后从保存path中select页面。 这允许中断点开始工作。

如果我们从VSTS获得最新版本,则所有文件都将处于只读模式。 在运行项目时,所有的类库类都只读,制动点变空,并说“断点当前不会被命中,没有加载这个文件的符号”。

解决scheme1

进入项目位置右击文件夹—>属性—>常规选项卡—> UNCHECK只读(只适用于文件夹中的文件)—>应用—>确定

解决scheme2

开始debugging,进入debugging—> Windows —>模块。select一个程序集并右键单击—>(select)符号设置。 在此目录中的“caching”符号中设置您的Binpath,然后select符号为PDB位置的Microsoft服务器。 点击加载所有符号。 这将需要时间,然后单击确定。

现在所有程序集的符号状态已经从“无法find或打开PDB”变成“符号加载”了。