Visual Studio needs to know what libraries link to what source code in order to be able to set breakpoints. If you open a random file in the editor and put in a breakpoint, when you start, it will hollow out because the file is meaningless to VS. If you reference a project then VS can work things out but if you reference a library you need to make sure that a) You reference debug versions of the library because b) You need pdb files which describe which file and line your executable code came from (and how the debugger can work things out).
If you have old pdb files somewhere then that can cause the confusion (and lines of code not lining up with the breakpoints) and also make it look like the place you are putting a breakpoint in is not being called. Also, if you add new files to a project and the pdb files are not updated then you will not be able to set breakpoints in them.
Basically, check your external libraries are built correctly and the pdb dates are the same as the dll dates. Check you don't have stray pdb files in your project perhaps from an earlier build and make sure you are not using release dlls with the debug pdbs (or vice-versa?).
In my experience it usually a little mess causing a big problem!
Senior Software Developer
*Please mark the thread as Resolved if this answers your question*