我该如何补救“断点不会被击中。 没有符号已经加载这个文件。“警告?
快递版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如果这不起作用,请尝试清理项目(鼠标右键单击项目>清理)
如果这不起作用检查这个:
- 用鼠标右键点击你的项目
- select[属性]
- select[Build]选项卡
- 确保选中[Define DEBUG constant]和[Define TRACE constant]
- 点击Build页面底部的[Advanced]button
- 确保[debugging信息:]设置为[完整]
- 点击[确定]并重build项目;-)
(第6步生成.pdb文件,这些是debugging符号)
在debugging/常规设置中禁用“只是我的代码”选项。
交叉发布这个修复从汉斯钾 ,我发现在类似的线程>> HERE << :
右键点击解决scheme – >属性
在通用属性 – >启动项目下查找
select多个启动项目
select需要debugging的项目上的“启动”操作。
感谢汉斯!
Debug
> Windows
> Modules
来查看正在加载哪些模块使我在正确的方向。
在我的情况下,IIS Express似乎正在从临时的ASP.NET文件中加载一个不同的DLL。
解决scheme?
- 浏览到
C:\Users\<YOUR USER>\AppData\Local\Temp\Temporary ASP.NET Files\vs
- 删除此目录中的所有内容!
选定的答案使我解决了我的问题。 但是我需要做更多的事情:
即使在下拉菜单中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
我正在使用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”变成“符号加载”了。