After reading the wiki, I had a revelation as to what the cause of the problem may be, and was able to solve it, thank you.
For googlers: the issue seems to be that the file in question was a header file that had no associated c++ source file because I had implemented the class's functions in the header file itself. That made the compiler freak out and generate a precompiled header file for that header file. For some reason, any changes made to the original header file would not commit correctly, and the header would not recompile. The compiler noticed this problem, and threw out the debugging symbols for that file because it assumed them to be corrupt. This was fixed by deleting the .gch file and creating a c++ file for the header, and moving the function implementations into that file.