简体   繁体   中英

How do I remedy "The breakpoint will not currently be hit. No symbols have been loaded for this document." warning?

A C# desktop application (on the Visual Studio Express edition) worked, but then it didn't work 5 seconds later.

I tried the following:

  • Ensure debug configuration, debug flag, and full debug information are set on all assemblies.
  • Delete all bin and obj folders and all DLL files related to the project from my entire machine.
  • Recreate projects causing the problem from scratch.
  • Reboot.

I have two Windows Forms projects in the solution. One of them loads the debug information, one doesn't. They both refer to the assembly I'm trying to get debug information on in exactly the same way in the project file. Any ideas?


I want to add here, mostly for myself when I come back to review this question, that symbols are not loaded until the assembly is loaded, and the assembly is not loaded until it is needed. If the breakpoint is in a library that is only used in one function in your main assembly, the symbols will not be loaded (and it will show the breakpoint as not being hit) until that function is called.

Start debugging, as soon as you've arrived at a breakpoint or used Debug > Break All , use Debug > Windows > Modules . You'll see a list of all the assemblies that are loaded into the process. Locate the one you want to get debug info for. Right-click it and select Symbol Load Information. You'll get a dialog that lists all the directories where it looked for the .pdb file for the assembly. Verify that list against the actual .pdb location. Make sure it doesn't find an old one.

In normal projects, the assembly and its .pdb file should always have been copied by the IDE into the same folder as your .exe, ie the bin\Debug folder of your project. Make sure you remove one from the GAC if you've been playing with it.

Check if you are not in release but in Debug.

When in debug:

First try rebuilding your project by right mouse click the project > Rebuild If that doesn't work, try a clean of the project (right mouse click on the project > clean)

If that didn't work check this:

  1. Right mouse click your project
  2. Select [Properties]
  3. Select the [Build] tab
  4. Make sure [Define DEBUG constant] and [Define TRACE constant] are checked
  5. Make sure [Optimize Code] is unchecked
  6. Click the [Advanced] button at the bottom of the Build tabpage
  7. Make sure that [Debug Info:] is set to [full]
  8. Click [OK] and rebuild the project ;-)

(step 7 generates the .pdb files, these are the debugging symbols)

Just something simple to try - you may have tried it already. Right click the Solution in solution explorer, click "clean solution", this deletes all the compiled and temporary files associated with a solution .

Do a rebuild of the solution and try to debug again.

I've also had troubles with breakpoints multiple projects in a solution - some compiled as x86, some as x64.

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

Cross posting this fix from Hans K that I found on the similar thread >> HERE << :

Right click on solution --> Properties

Look under Common Properties --> Startup Project

Select multiple startup projects

select Start action on the projects you need to debug.

The selected answer led me to fix my problem. But I need to do a few things more:

Even with "Debug" selected in the dropdown:

在此处输入图像描述

And in the project Properties > Build:

在此处输入图像描述

The Visual Studio was not loading symbols to a specific project. So in that dropdown I select "Configuration Manager" and saw that the settings to my web project was incorrect:

在此处输入图像描述

在此处输入图像描述

Then I set that to "Debug" and it started to generate the .pdb file. BUT I need to manually copy the PDB and DLL and put in the folder that VS was looking (here is where the selected answer helped me):

在此处输入图像描述

Sometimes, even though it gives you this error, the Breakpoint still gets hit, so just ignore the error. This happens fairly often in the Views of an MVC web app , ie .cshtml .

Debug > Windows > Modules to see what modules were being loaded put me in the right direction.

In my case IIS Express seemed to be loading a different DLL from the temporary ASP.NET files.

The solution?

  1. Browse to C:\Users\<YOUR USER>\AppData\Local\Temp\Temporary ASP.NET Files\vs
  2. Delete everything in this directory!

I was able to fix the error by simply setting the option in the 'Attach to Process' to 'Automatically determine the type of code to debug' option as shown in the attached screenshot.

Simply follow the steps below:

  • Go to Debug from the menu bar
  • Click on Attach to Process
  • Near the Attach to option, click on the Select button
  • The Select Code Type window will appear
  • Now select the option Automatically determine the type of code to debug and click the OK button.

修复调试错误

Check if your .pbd file is missing in your bin/Debug folder. If it is then go to "Properties" of your project, selected "Build" and then "Advanced" at the bottom. Choose "full" under "Debug info" in the new window that appeared. This was my issue and solved it for me.

显示在哪里可以找到设置

In my case "Optimize Code" was checked in my project properties. This caused VS to see my assembly as "not my code", and in turn, it did not load symbols for it.

The solution was to uncheck this. 优化代码复选框的位置

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

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

In my case i am trying to debug in relase mode. Once i change it to debug mode. Its working

Debug -> Options -> General -> Uncheck mark for " Enable Just My Code "

This worked for me.

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

I tried everything mentioned above, but nothing worked. [Clean solution, and check for PDB files etc.]

Even publishing the same solution did not resolve the issue.

Then I went to back to what I usually do to resolve (fool this stubborn Visual Studio)

All I did was to make a deliberate change in code and publish the solution. Then I reverted the change and published again.

Voila [PDB files rid of evil spirits].. Not a smart resolution, but this did work.. :-|

Check your Solution Configuration drop down list. Make sure you select Debug , not Release .

Option "Start debugging, Debug + Windows + Modules" does not exist in Microsoft Visual Studio Express 2013 edition.

Unchecking "Use Managed Compatibility Mode" in Tools Options Debugging fixes this.

We found the cause of our problem. This code was using the "CodeBehind" attribute in the Page directive of the .aspx file instead of the "CodeFile" attribute (ASP.NET 2.0 and beyond). After days of desperation, a simple search and replace solved the problem.

Webapplications (IIS Express) only:

  • Rightclick IIS Express Tray and close the IIS.
  • Clean Solution

IIS 托盘

  1. Clean solution and Rebuild
  2. Check the configuration is set to Debug
  3. Make sure that the PDB file is in the Debug folder it self
  4. From Debug menu click Enable All Break points

None of those answers solved my problem. I tried another thing based on fact that the project with the stop wasn't in reality the loaded project. I found as Hans Passant wrote that the .dll where I want to stop debugger and the associoated .pdb files where copied near the .exe file. Those files have had an older date so I thought they wasn't updated in the runtime. I manually deleted them, Visual Studio create another pair AND put this new pair near the .exe. Now the breakpoins works !

Maybe Visual Studio cannot copy and REPLACE existing files (.dll and .pdb) near the .exe since there are another there. So if I deleted manually then VS could create new one near .exe.

I think that another changes (checks and so on - from the another answers) triggered something and Visual Studio copied and replaced the dll and pdb from the project folder to the folder near the exe, so that was a solution.

I think that the root cause of the problem is that the Visual Studio use another file in runtime, no the file from the project, with the stop.

Maybe this answer to help someone !

Check are the following two setting the same in Visual Studio:

Right click test project, go to Properties, Build tab, and look at Platform target

Mine are all set to "Any CPU" so x64

在此处输入图像描述

On the Main Menu bar, go to Test, Test Settings, Default Processor Architecture

Mine was set to X86

在此处输入图像描述

Changing this to X64 to match above setting made the built in Visual Studio menu “Debug Test(s)” work and hit breakpoints that were previously ignored with the message “The breakpoint will not currently be hit. No symbols have been loaded for this document”.

Update:

For Visual Studio 2019 the menus have been moved around a bit: 在此处输入图像描述

Instead of doing all these things just

Close and reopen

the solution it will fix the issue

我有类似的问题,我做了以下事情:调试=>选项=>常规=>删除“启用我的代码”的复选标记这对我有用..

I also had the same issue what I rebuild the whole solution (including refereced projects) in x86( or x64)

Even though I set all of my projects to x86 from Configuration Manager (Build->ConfigManager) some of my projects were not set to x86.

So Just to make sure right click on the project and follow

project -> properties -> Debug Tab, verify Configuration and Platform.

Things to check just to be clear: Make sure you have the configuration set to 'Debug' and not 'Release'. You can debug the startup project in 'Release' mode, but not a referenced class library.

Project Properties (then select your build config) > Build Tab > Advanced... > Debug Info (dropdown)

Set to 'all' or 'pdb-only' then rebuild

This took me a while tried other options above and for some strange reason debugging stopped working.

Tool -> Options -> Debugging -> General -> (untick) "Require source files to exactly match the original version" option

我知道我迟到了几年,但我认为我做错了什么并按照上述步骤操作然后我意识到我错误地将解决方案配置设置为“发布”:)

I have read carefully all the answers above, but none of them solved my problem.

In my case, I was compiling a class library (DLL). No modules seem to be loaded in Debug -> Modules, so I couldn't even load the symbols manually.

My solution was to add this line to my code:

System.Diagnostics.Debugger.Launch();

Once this code is reached, an exception is triggered and .NET Framework shows a dialog box asking which Visual Studio (ie new instance of VS 2008, new instance of VS 2013, etc) you want to use to debug the program. You can choose the existing instance of VS with your project loaded. This will attach the process to your VS session and load all symbols, and now you can debug your project.

Of course, the compilation has to be done using the Debug configuration, not Release.

  1. Make sure you're in Debug and not is release by choosing debug in the dropdown menu like you can see in the picture below.

在此处输入图像描述

  1. Then, try cleaning your project by clicking the right button in your mouse on the solution in the solution explorer window and choosing Clean solution .

在此处输入图像描述

  1. Then rebuild your solution by clicking the right button in your mouse on the solution in the solution explorer window and choose Rebuild solution

在此处输入图像描述

Right click on Project -> Properties -> Go to Build Tab -> Uncheck Optimize Code . Do It for any project in your solution

After trying a bunch of these, the thing that ultimately worked for me was this:

In Debug > Options > General , uncheck Enable Edit and Continue .

I have been fighting this problem for almost an hour. Then I figured out that I stupidly mistakenly linked a "release" static library instead of the "debug" version of that library. My setup is VS2019 with "CMake" project and I am doing a C++/VulkanAPI project. The setup might be quite different for your project, yet the issue might still occur.

I know there are almost ~30 answers already, yet I just wanted to share my experience here, so "Maybe" someone may forget to change the release libs into the debug libs.

I was integrating a C# application with a static library using VS10 - which I'm new to. I wrote a managed code dll to interface them. I could set breakpoints everywhere but the static lib. I got the message described above - no symbols have been loaded for this document. I tried many of the suggestions above. I could see that the symbols weren't being loaded. I finally noticed a check box Configuration Debug, Enable unmanaged code debugging. That allowed me to set breakpoints in the static lib functions.

For an ASP.Net application, check the properties of the site, ASP.NET tab. Ensure that the correct ASP.NET version is selected.

this happened to me after copy paste another webservice asmx file into an existing webservice, resulting in the same error when trying to debug the recently added service, to be able to debug I had to start without debug, then attach to the process. its weird but its the only way i found to be able to debug.

If we get the latest from VSTS, all files will be in read only mode. While running project all class library classes get read only and brakepoints turn empty and say "Breakpoint will not currently be hit. No symbols loaded for this document".

Solution 1

Go to the project location and right lick the folder ---> Properties ---> General Tab ---> UNCHECK read-only (Only applies to files in the folder) ---> Apply ---> Ok

Solution 2

Start debugging, Go to Debug ---> Windows ---> Modules.Select one assembly and Right-click ---> (Select) Symbol Setting. Set Your Bin path in Cache symbol in this directory and select Microsoft Servers in Symbol of PDB location. Click Load All Symbols. It will take time.Then click OK.

Now the symbol status of all assembly has been changed from "can not find or open PDB" to "Symbols loaded".

I tried all of these and could not get my break-point working...

What i did to fix this issue was

In the page where my break-point was not hitting, i selected the folder > add an existing item and then select the page from its save path. This allowed the break point to start working.

[ WINCE ] I happened to encounter this during build on WinCE, it seemed that the 'Clean' did not clean the target folder on the device, I got the debug/break back by changing the Output folder on Devices (Project Properties-->Devices tab-->change Output folder to other than the previous failed debug) -- and voila!! it works. Might have to do manual cleanup on the device, but that will be later.

Hope this help.

If you are finding that you are having to build projects in your solution individually in a particular order to get the solution to build because building the solution directly after a clean doesn't work, and then you are finding the problem described in the Question, it is possibly due to the inclusion of some additional projects that have references to incorrect relative paths because they have been added to your solution from a different location. Therefore, the relative paths don't go to the same location as the .csproj files that are sat in folders directly under your .sln file.

The reason it would build by building the projects one by one in a particular order is because the other projects reference the same libraries but then build to the GAC. The solution ends up building but the symbols it loads are from the GAC and these symbols may become outdated.

The solution as it were is to restructure the physical folder structure of your solution and projects, or to open the .csproj files individually and fix the relative paths so that all references to any given library ultimately point to the same location in all projects. Or perhaps use the $(SolutionDir) token.

And if all else still fails, then you need to force Visual Studio into resetting your build configuration and this requires you to uncheck all projects for all build configurations and then to recheck them all - see the solution here .

For me, the problem was just that I was trying to debug in a web project that was not set as the startup project. So it was not well compiled when running debug and the .pdb wasn't up to date.

Just setting the project to "Set up as startup project" did the trick.

Hope this helps

I had the same issue and I tried everything possible...some of those are

1) Nuking temp files in Temporary ASP.NET Folders in bin and obj folders.

2) Unchecking the Optimize code and Enable my code

3) Navigating and trying to manually load the symbols from module windows.

4) Checking the build flag in the properties of solution. ........

And the list goes on.. I spent like one day on this but what finally worked for me actually was... I knew that the symbols for my project was not being loaded and i could not see any modules with my project name in the modules window either...

so the issue was my symbols were being brought from virtual directory path of the project... and it was mapped to the virtual directory of some other project instead... the web project that was supposed to load in the modules was not there Following are the steps i followed..

  • Right click the specific web project and select properties
  • Go to Web tab
  • You can see the Create Virtual Directory button
  • As soon as i clicked it i saw an alert message saying "the (projectname) is mapped to (anotherProjectName)" are you sure you want to do the remapping? Something like this
  • then it made sense that for why i was seeing the unecessary project name in the modules window
  • then i rebuilt the solution and was able to hit the breakpoint

I was getting this and was stumped (using Visual Studio 2013 Premium).

Normally our apps at work reference .dlls in a particular common/app directory, like this: C:\OurCompanyApps\xxxxxx.dll. This was happening in a solution that has a bunch of WinForm and .dll projects in it. The .dll projects compile to C:\OurCompanyApps\ and the WinForm projects reference the compiled .dll files in that location.

The problem: I found that the app in question was referencing the .dll project in the Source Control bin\Debug location instead of the compiled .dll file in C:\OurCompanyApps.

Solution: I deleted the reference and re-added it from the C:\OurCompanyApps\ location. Then I could step-through the breakpoints I had added in the .dll code.

Hope this helps someone.

If you have both C# and native code(C/C++), make sure that native debugging is enabled for the project:
1. Right-click your Startup Project in Solution Explorer
2. Select Properties
3. Select "Debug" tab
4. Make sure Native Code debugging is enabled 必须选中“启用本机代码调试”才能调试您的本机代码

Try to do this. It worked for me.

Debug=>Options=>General => Remove the check mark for "Enable Just My Code"

I think the source if this error is, the debug symbols have a hard time surfacing to the solution after building for release.

I tried all the other answers -- generally, regenerating .pdb symbols or checking their location, cleaning and rebuilding project, ensuring active configuration is not Release etc.

What eventually worked for me is right-clicking on the project in solution explorer > Debug > Start new instance.

The Following steps forked for me:

  1. Go to the "bin" folder of your project.
  2. Delete the "Debug" folder.
  3. Build your project again.
  4. The Debug folder will get re-created.

Now you can start debugging again.

I resolved this way: Run the project. Go to, Debug -> Windows -> Modules Choose the library you want debug and right click in it. Choose -> "Load Symbols" and then will change "Skipped loading suymbols" for "Symbols loaded".

I had same issue with Visual Studio 2019 community and Asp.net Web form project. I spend 1.5 day and any of these 30 answers solved my problem. Finally I run the visual studio installer exe and select repair option. So my configuration was reset and problem is completely gone.

If you find none of the above solutions works, try this.

RIGHT CLICK PROJECT -> Properties -> BUILD -> Advanced. Change Debugging information from None to Pbd-only or full

在此处输入图像描述

I solve this exact problem by:

  1. Open studio as administrator
  2. Use Build->Clean Solution
  3. Use Build->Build

Goto the project's properties then to the "Build" tab. Click "Advanced..." at the bottom and change Debugging Information to "Full" 在此处输入图像描述

在尝试在 VS 2013 中调试 Excel 插件时,在我通过禁用 DotNet 框架源步进和禁用符号加载尝试了所有 Debug 设置之后,最终对我有用的是将 Configuration Setting 更改为 Release 而不是 Debug ,因为编译器似乎越过代码,断点最终被击中。

I went through all answers nothing helped much. In my case problem with web.config file. It was <compilation debug="false" strict="true"

I changed to

<compilation debug="true" strict="false" . Now I can debug application.

I'd like to add one more thing that can prevent stepping/breaking by not loading the .pdb file, after not finding this in any other forum: if you add a build post-process to add resource meta-data to the DLL (company name, version number, etc), as in "rc.exe my_dll.rc", this may be causing a mis-match between the DLL and the .pdb file. If the signatures don't match, it won't load the file and all the symbols you need for debugging. Remove this from the debug build.

Make sure your code is not getting thrown out at link time. Even though the compiler may rebuild an object, if the linker sees no reference to the code it will toss it out and cause this error when attempting to set a breakpoint.

我个人的情况是调试在最初创建它的 Visual Studio 2013 中工作,但在 2015 年无法工作。我能够通过将项目文件中的版本更改为版本 12 而不是版本 10 来解决此问题。

就我而言,在AssemblyInfo.cs文件中,有以下行,我对其进行了评论,一切都是正确的:

[assembly: System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]

I ended up tracing my issue back to an apparent incompatibility issue with using multiple PostSharp versions . The app I was attempting to debug had a previous version of PostSharp but was referencing a project which was using a more recent version, and for one reason or another this resulted in VS refusing to generate the PDB file for specifically that app (all other DLLs were loading their debug symbols fine).

The solution was to update PostSharp within each project to the most recent version and recompile.

In my case, it was because my publishing profile (Publish to local IIS site) was somehow set to Release Configuration, despite the fact that the global build configuration was set to Debug. Modified the publishing profile to Debug configuration solved the issue for me.

In my case this started happening after a Windows Update , turns out the windows update turned off Internet Information Services which was making it appear that my API was unable to hit the break-point that I had set, but what was actually happening was that IIS was failing to start and therefore my application code wasn't actually running.

Double check that Internet Information Services is enabled in the Windows Features menu.

Instructions for IIS:

  • control panel
  • Programs
  • open or close windows features
  • tick internet information services
  • restart visual studio

If using IIS Express:

Open 'Add/Remove Programs' from the old control panel and run a repair on IIS Express Or you might go Control Panel ->> Programs ->> Programs and Features ->> Turn Windows features on or off ->> Internet Information Services and check the parent Internet Information Services folder.

I got this answer here: Specified argument was out of the range of valid values. Parameter name: site

In my case, I was debugging a WPF extension using Visual Studio's Experimental Instance. After starting debugging and then pausing the dubugger, I opened the Debug > Windows > Modules window. Form there, I could see the directory where Visual Studio was trying to load symbols C:\Users\<username>\AppData\Local\Microsoft\VisualStudio\15.0_76a9e536Exp\Extensions\<companyName> . After stopping debugging, I deleted the target folder using Windows Explorer and restarted the debugger. Visual Studio was then able to hit the breakpoint.

In my case, none of these solutions worked. I had to go to

Tools -> Import and Export Settings -> Reset all settings.

and then debugging started working without any issues.

If you are using a C++ project or dll from a C# or any .Net project, and you want to debug into the native code. Then go to the .Net Project Properties -> Debug -> Enable native code debugging (set it to true).

As stupid as it may sound, be 101% sure that you are referencing the right class.

In my case I have a GameObject in which I added the wrong script to the components. Hence, there is no way for Visual Studio to actually reach the code.

I simply had to delete the wrong C# script and component and add right one.

UWP:

If you are debugging a Universal Windows Project [UWP] , the process is similar to solutions with mixed C# and Native code , Except you need to set the Application process or the Background Task process debugger to Managed Only to debug you C# code.

  1. Right-click your Startup Project in Solution Explorer
  2. Select Properties
  3. Select "Debug" tab
  4. Set process debugger type to Managed Only

在此处输入图像描述

Left field answer here. I had a solution with a few projects, and because they had the same port number Visual Studio was starting the wrong project. So yeah, the debug symbols weren't loaded for my breakpoint...

I managed to end up with two copies of a file with the same class in it. Both were open in Visual Studio, but they had different file names and one was actually included with the project and one was not.

Make sure the breakpoints you are setting are in a file that is actually being compiled by your solution/project. There are no symbols for a file that isn't being compiled.

Yet Another solution for some cases where this error occurs: check your Build Action .

I had this issue in an asp.net MVC3 project; one of my controllers had for some unknown reason it's Build Action set to EntityDeploy although it should have been Compile .

I've done the clean and rebuild thing. That didn't work (it usually does). Now, I am attaching to w3wp before calling through the service, then let it call the service once, hit another breakpoint, then I change the point of execution so that it will run the same line (calling the service) again, then it actually stops at my breakpoint inside the service method.

None of the ideas here worked for me but I thank everyone for their efforts - in my case it was a Windows application that referenced a class library project - I could debug the windows application but not the class library. The pdb files were being generated. I did however find that if I debug on the call to the class library, I could step into the library.

我在 2013 年启动 ASP.NET 网站时发生过这种情况。在我的情况下,一旦网络浏览器完全启动,它就会消失。

Had the problem when trying to debug a silverlight application in a sharepoint project. Under the sharepoint tab of the project properties you have to explicitly enable debugging for silverlight applications. Else you get this error.

Maybe you should not have been making an AutoPostBack .
If your code doesn't make a PostBack, you can get this error.
Regards.

I was using IE8 and trying to make changes to some JavaScript files. Although the code was being executed, it would not stop at the breakpoints and I was getting the same message on the breakpoints. Upgrading to IE11 fixed the issue for me.

In my situation, the Visual Studio loads the DLLs in Global Assembly Cache (GAC) , not the DLL in my project list. I deleted the DLLs in GAC and now I can see the break point working.

For me:

  • Open solution properties
  • Select "Common Properties"/"Debug Source Files"
  • In the "Do not look for these source files" window, remove the files that are almost certainly there erroneously.

Yet another tip that worked for me.

If your project / library is signed, not even delay signed, it still may not be debuggable. Try disabling the signing option, debugging it, then restoring the signing option.

My coworker had this problem, followed similar steps as those here, but the solution was different than any of these given.

The code she wanted to debug was in a project referenced by the current project, and it was never running within the Visual Studio session. The DLL was running from the GAC folder, after she deleted that the project wouldn't run at all, throwing an exception as soon as it tried to run. The solution was to include the referenced project in the local folder.

From the SolutionExplorer:

  1. Select the "debugging" project you will run out of
  2. Expand References (if not visible, select menu Project , item Show all files )
  3. Right-click the project which has the break point that is not working, select Properties
  4. Change value of Copy Local from False to True

Try again. (It worked for her!)

对我来说,另一个解决方案是后期构建无法进入主项目的 bin 文件夹的项目。

Also had this issue with a Qt .pro generated project. It turned out I forgot to set an environment variable which determines the properties/general/Output Directory. Trivial one, and one to look at in the first place, but sometimes we miss the obvious.

I had accidently opened the project file in a text editor and it was unloaded. Unlikely, but check it out if you're stuck.

I realize this is an old thread, but for the benefit of others here is what happened to me. The issue was in how I applied the Designer attribute. I created a designer class. The designer overrode PrefilterProperties to make the Anchor, AutoScroll and AutoSize properties read only.

[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
public class j2aScrollableContainerDesigner : ParentControlDesigner

I created a class and added my designer to it. This is the standard way to attach a designer attribute to a class and is found in many MSDN examples. The designer was obviously not being used because when I placed my control on a Form design surface, none of the properties mentioned above were read only in the Property Grid.

[Designer(typeof(j2aScrollableContainerDesigner), typeof(ParentControlDesigner))]
public partial class j2aScrollableContainer : UserControl

Out of desperation, I changed the Designer attribute declaration on my class to the following signature and the designer was now called. I have no explanation as to why one way works and the other doesn't. If I revert to the above Designer attribute declaration, the designer will quit working again.

[Designer(typeof(j2aScrollableContainerDesigner))]
public partial class j2aScrollableContainer : UserControl

我的丢失主要是因为我有 2 个项目停在同一个 IISExpress URL,请确保指定不同的端口并点击 CreateVirtualDirectory。

This can be cause by a test project, web project, or other execution project having a Nuget reference to a project with the same name as the module being loaded.

Take the following example projects in a solution:

  • Vendor.ABC
  • MyLib (references Vendor.ABC)
  • MyProg (console program: referencing MyLib only)
  • MyProg.Web (MVC project: references MyLib and solution project Vendor.ABC)
  • MyLib.Test (Test Project: references MyLib and Nuget package Vendor.ABC)

MyProg and MyProg.Web will both load the debug symbols. MyLib.Test will not load debug symbols.

Project > Properties > C++ > General > Debug Information Format - Program Database (/Zi)

I had checked Linker > Debugging and was already generating debug info. When I launched the application, symbols were loaded ( Debug > Windows > Modules ). Setting the Debug Information Format fixed it for me. Hope this helps someone!

Main project has both Project Reference and File reference to same project.

In my case, the main project had two references one was a project reference and another File reference, to the dll generated by same project.

Thus, pdb file was not being copied to Main project's bin folder, leading to unavailability of the symbols.

Sometimes IIS will hold on to files for some reason. I had to delete the website and create it anew and the problem went away

Check if you have enabled "Enable just my code". If yes, disable it.

I had set a breakpoint and got this message on that breakpoint when executing the code. However, the breakpoint was only accessible to a unit test. I had to right click the unit test and select "debug unit tests" Doh!

Using Dependency Injection, Autofac in my case, to automatically resolve by scanning assemblies. One of the referenced assemblies was not getting resolved.

My fix was to directly reference a class from the assembly to force Visual Studio to load the assembly. Just having the assembly as a reference will not load the assembly when the application runs.

My reason was deprecated Telerik OpenAccess ORM. Installed new version then it works. Must download and install. Only NuGet updating did not work. someone else also mentioned it

Will put this here in the hope that it helps someone.

I had the missing symbols issue with regards to a web service.

The daft solution was that the setup project was not set to build when the solution was built, which meant that when I right clicked the setup project and installed the service, then attached to the process; the same out of date service was being installed without the pdb because it didn't match = no working breakpoints.

The manual solution was to right click the setup project and build it, then install from it. I then altered the solution project build list to include the setup project when the solution is built in debug mode.

It is also worth to mention that in some situations the problem occurs, because the project you want to debug is an external service. In that case you have to attach debugger to the running process.

对于我的 Xamarin 应用程序,在我完全擦除源代码管理文件夹、执行“获取最新”并重建解决方案后,它终于开始调试。

A new way to get this problem has appeared as of Visual Studio 2017 15.3.1 through 15.3.5. If you are using EditorConfig , the charset=utf8 option causes these symptoms. The VS team has reproduced this and says they are working on it .

So one fix is to comment out your charset=utf8 line in the .editorconfig file.

Status is now "Fixed - pending release" as of October 9, 2017.

(Thanks to John Hatton, "The breakpoint will not currently be hit. The source code is different from the original version." What does this mean?

No meu caso dei um F11 na chamada do método, forçando entrar no método onde o BP com problema estava, sendo assim, o break point foi recuperado.

In my case I gave an F11 in the method call, forcing to enter the method where the problem BP was, so the break point was recovered.

There are many answers with many different solutions to fix this issue.

Another solution is to make sure that your code is reachable. For example:

Any code that is added after a Return in a function. Adding a GOTO that effectively skips your code that has the break point.

I'm not saying these are normal but they are also causes.

When debugging an assembly by starting an external application there are some extra considerations:

  • The external app may load its own copies of assemblies (DLLs) from a manifest file. (eg, file appname.exe.manifest ) If so, you need to disable this possibly by manually altering the manifest.

  • The external app may just try to load from DLLs in its own folder, even without a manifest. You will have to remove / rename these.

With these steps taken care of, the version of the assembly running in the debugger should be correctly loaded and can be debugged normally.

I had same problem, checked all the previous solutions but didn't work for me. Simple but added answer just to make sure people don't get stuck on this not to exist problem as I did.

What worked for me was, I was running VS 2013 on admin mode and running on normal mode did the trick. Tried multiple times switching to normal and admin mode and its consistently working fine.

IDE: VS 2013 Professional
Version: 12.0.40629.00 Update 5

I had this problem.

My issue was that the aspx, aspx.vb and aspx.designer.vb files were imported wrong (Perhaps they were imported one by one to the project).

The breakpoint were in the aspx.vb, but was unreachable and had the warning of this question.

The solution was to delete the three files and import them again. Now I can reach the breakpoint.

it was so easyyyy. it also happend for me because .pdb file of the project have not copy in debug\Bin folder then it could not load symboles (.pdb file) in debug mode . in this way : you must rebuild your target project and manually copy the symboles (.pdb file) in debug\Bin folder of execute project

I test all answers for this question not work for me, I use this below method:

I exclude that file(s) has breakpoints from project where that visual studio can't hits them and then I includes them into my project and worked breakpoints.

Make sure your files are open from the relevant project, not from another (old) one.

Example:

  • You working on a project, close the VS, but you left files (tabs) open in VS.

  • Copy your project to a new folder and open solution. The files (tabs) will load from the old directory and if you want to debug then you cannot debug until you close them and reload them from the current folder.

I was very close to reinstall my VS because nothing helped for me from another answers, but fortunately I realised this in my project and I can debug now.

Had this problem yesterday with a Web Project, tried many of the solutions proposed here and didnt work.

How did I solve?

Right click on the project -> Properties -> Web tab

In Servers section I changed IIExpress for Local IIS , created the virtual dir, and voilá!

检查 csproj 文件中是否有<DebugType>Full</DebugType>的行/条目如果存在,则尝试将其删除并再次尝试调试

Maybe I can add something new. Unless I missed something (possible!) in these many posts, there doesn't appear to be an accepted solution or any mention of System.Reflection.Assembly.LoadFrom(filename) which is the method .NET provides when you need explicit control. If the Modules tab shows assemblies loading from unexpected locations, this is how you can fix that and get your debug breaks back.

Sometimes there are very good reasons for doing this. For me, it was when I was supporting a platform that allowed users to create somewhat arbitrary plug-ins, and I had to be careful about having a race with those plugins about where the common assemblies get loaded from. The goal was to make sure the "golden" versions living in the same directory as my Platform.exe would ALWAYS be the ones to load without exception. (Putting them in the GAC is sometimes the right answer but not always).

I has been rightly mentioned in other posts that default build settings cause referenced assemblies to get copied locally in the \bin of the plug in when it builds. Plug-ins are one example of a use case where that's the total opposite of what you want to happen. There might be 100 users with 100 plugins and 100 copies of a given assembly. Which one of the 100 will load? And will it be the latest, correct version?

Here's how I was able to do this reliably for a real-world platform that I supported for more than a decade, loading assemblies up-front.

using System;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Windows.Forms;

[STAThread]
static void Main()
{
    PreLoadAssemblies();
    Form appInstance = new InstanceManager();
    Application.Run(appInstance);
}

private static void PreLoadAssemblies()
{
    // Obtain an explicit folder path relative to where
    // the main executable ("Platform.exe") is running.
    string dir =
        Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) +
        @"\Accessories\PlugIn\google-drive-sync\netstandard2.0";

    PreLoadAssembly(dir, "Google.Apis.Auth.dll");
    PreLoadAssembly(dir, "Google.Apis.Drive.v3.dll");
    PreLoadAssembly(dir, "Google.Apis.Auth.PlatformServices.dll");
    PreLoadAssembly(dir, "Google.Apis.dll");
    PreLoadAssembly(dir, "Google.Apis.Core.dll");
    PreLoadAssembly(dir, "Google.Apis.PlatformServices.dll");
    PreLoadAssembly(dir, "Newtonsoft.Json.v10.dll");
}

private static void PreLoadAssembly(string dir, string name)
{
    try
    {
        Assembly resolved = Assembly.LoadFrom(dir + @"\" + name);
        Debug.Assert(resolved != null);
    }
    catch (Exception ex)
    {
        Debug.Assert(false, ex.Message);
    }
}

I had the same problem. I tried EVERYTHING in this post.

My solution?

Change the Visual Studio version (I was trying to open it on VS2013, ended up opening it on VS2015)

For me, the test class was annotated with [Ignore] . I don't know why it was still showing up in the test explorer, but whatever. This is with the Visual Studio Unit Testing Framework.

在此处输入图像描述

I tried all of the answers posted here and I did not work. For me the solution was to check "launch browser" 在此处输入图像描述

My experience is in trying to remotely debug a web app I deployed to an AWS server. The problem is that when I deploy to the server, it compiles and creates the exe and pdb files at that time. But the local compiled exe and pdb file does not match the deployed files on the server, so when I attach to the remote process and then try to load symbols in Debug/Windows/Modules for my project's DLL, it finds the local pdb file and I get an error "PDB does not match image."

So after trying all the above suggestions, this is what I did to make breakpoints work:

  • Connect and log in to the remote web server.
  • Go to the folder where the exe and pdb files are kept. In my case, it was C:\inetpub\AspNetCoreWebApps\app.
  • Copy the *.pdb files in that folder.
  • Paste the pdb files to your local computer where it's looking for the project's pdb files. You will find the path in Debug/Windows/Modules, right-click your DLL and select Symbol Load Information...
  • Now you can use Debug/Attach to Process... to attach to the remote process and it should load the symbols since the pdb now matches the remote exe file.

Once you are done remote debugging, you can rebuild the project to restore the current pdb files so you can debug locally.

It may be possible to add a path to the symbol path list that would load the pdbs from the remote server, but if there is I have not found it yet. And that may be more cumbersome than simply copying the pdb files from the remote server to your local VS environment.

In my case, the problem was that I had added a new project/component, and I forgot to Sign it. When other components in the solution are signed, your new ones need to be as well. So solution for me was to copy the snk-file (from another project) into the new projects folder, and then from project properties / Signing choose it.

Another issue may be if the team is using different versions of VS or if someone is using Rider and some VS, they may use different casing on the project GUID.

My situation was with Visual Studio 2019 and we have both C# and C++ code. Not sure what I screwed up, but the solution was to change from auto to Native as the C# code was working.

Debug -> Attach to Process... and where it says Attach to: select native code (in my case). Find the process in question and voila.

In my case it was a package called Strong Namer included with another Nuget that caused the issue. Removing Strong Namer resolved the problem.

Alternatively, especially when there is a dependency on the Strong Namer package, signing the project with a strong name key will solve the problem as well.

I had a ASP.NET project with this problem. It seems that some temporary files were involved and the project loads an old file, not the current file. Changing the folder name of solution resolved this problem.

After reviewing all of the above, this solved it for me in VS2019 - Tools > Options > Un-check "Require source files to exactly match the original version":

enter image description here

I have a blazor webassembly project and tried almost everything from the answers but nothing worked and the solution was to use Chrome instead of Firefox and the breakpoint was reached. Also the docs for blazor webassembly saying the following

Visual Studio requires the Enable JavaScript debugging for ASP.NET (Chrome, Edge and IE) option in Tools > Options > Debugging > General. This is the default setting for Visual Studio. If debugging isn't working, confirm that the option is selected.

Somebody had changed "launchBrowser": true to "launchBrowser": false in my launchSettings.json for my Blazor project.

It did launched a browser but resulted in no breakpoints. So I´m not sure what launchBrowser even does.

This took me over 4 hours to spot! Adding it here just in case it might save somebody some time!

What worked for me is that I went to Task Manager (Ctrl+Shift+Esc) -> Click on details, find the process you usually attach when debugging (eg w3wp.exe) and click on end task.

样本图像

If you have more than one project in your solution, may be the project you are debuging/breakpoint is not set as Startup Project. In my case, i'm calling a web service from an other project in same solution, so the web service was not Startup Project and brfeakpoint was not hitting.I set the ws as startup project and started a new instance of the calling project. It worked for me.

One more answer for those using ASP.Net (framework) WSP application.

The only way I could get VS to debug properly was to make sure debug="true" in your web.config on the compilation line:

<compilation debug="true">

I ran into this problem trying to debug the background agent of a WP7 app. As it turned out, this debugging issue was only a symptom of the real problem: My background agent wasn't running at all in debug mode. I had followed the following guide on how to implement a background agent: http://msdn.microsoft.com/en-us/library/hh202941(v=vs.92).aspx

... but forgot to add

#define DEBUG_AGENT

which meant that my agent was never actually being started in debugging mode. Once this line was added, the problem that this thread is about went away.

Try clean building your solution. Worked for me.

因为另一个项目中的文件同名,可能是你有两个控制器同名

None of the above worked for me. Somehow my code did load all symbols for x86 but not for x64. I fixed the issue after some trial and error by setting the Debugger Type in the Debug Properties to the following values:

  • Application process: Managed Only
  • Background task process: Managed Only

set these values to Managed Only

after this change the symbols were correctly loaded on x64

In Visual Studio check

Build => Configuration Manager => Active solution configuration

If it is set to Release rather than Debug no breakpoints will be hit.

As of VS2019 - 16.8.4, I used Microsoft Edge to make this work. I hope Microsoft will fix it in Firefox.

I was going mad trying to figure out why my JavaScript file would not debug and it took looking in the "Script Documents" (the loaded scripts) to realise my script was not there.

The designer had edited the page headers and replaced my individual developer JavaScript files with a combined minified version. I didn't realise until an half an hour's worth of googling and debugging attempts.

So basically I recommend looking in that list when debugging. If it's not in there, it can't be debugged. Doh.

The designer was doing the right thing. It just should have happened at the release stage, not the beta. A list of which script includes were minified would also be good, so it can be rebuilt for development.

BTW I tried the Modules stuff from previous answers, and obviously it was not that. The script was actually not being loaded in the project. Sigh.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM