今天遇到鬼,我的程序昨天设置断点时,还运行很正常,可是今天再在同样的地方设置断点时,就会出现:
“One or more breakpoints cannot be set and have been disabled. Execution will stop at the beginning of the program.”。
然后断点,就会变成空心的圈了。
检查了一下:
1 Build-Set Active Configuration-中为 Debug模式
2 Project settings... -> C/C++ -> General ->Debug Info: 这个下拉列表里,是 Program Datebase For Edit and Continue。
c/c++ 里的optimization为disable.
3 设置断点的地方肯定是正确的,因为昨天就在这个地方设置了一个断点,可以正常工作的。
4 我就把所有的断点都清除掉了,可是这样以后无论在什么地方加断点都 不行了
5 我就clean-> rebuild all 过多次,也没有解决问题
6 我又把 .clw , .ncb, .opt,.plg文件和debug里的文件删掉,再打开,rebuild all还是不行。 这到底是怎么回事?
“One or more breakpoints cannot be set and have been disabled. Execution will stop at the beginning of the program.”。
然后断点,就会变成空心的圈了。
检查了一下:
1 Build-Set Active Configuration-中为 Debug模式
2 Project settings... -> C/C++ -> General ->Debug Info: 这个下拉列表里,是 Program Datebase For Edit and Continue。
c/c++ 里的optimization为disable.
3 设置断点的地方肯定是正确的,因为昨天就在这个地方设置了一个断点,可以正常工作的。
4 我就把所有的断点都清除掉了,可是这样以后无论在什么地方加断点都 不行了
5 我就clean-> rebuild all 过多次,也没有解决问题
6 我又把 .clw , .ncb, .opt,.plg文件和debug里的文件删掉,再打开,rebuild all还是不行。 这到底是怎么回事?
还有设断点的地方是不是被优化掉了,比如
if( FALSE )
{
int a = 0 ;
}
----------------------------------
有可能你现在看到的有断点的cpp其实并不是程序正在运行的cpp,而是另外一个副本(因为是副本所以两个文件基本一样,但是debug看到的文件却不是被编译的文件)。就是debug 关联到的文件和被编译的文件关联得不一样,有可能你一个cpp被保存成两份了。
=========================
严重同意~~~~
把你编译指定的文件删除,重新编译就可以设断点
实在没法用OD解决——内存断点、硬中断,想怎么断就怎么断。
查看你debug的文件名,被编译的文件名 是否一样
查看工程目录是否有奇怪的或者没有用到的文件 有的话 删除多的就可以了
特别是类的cpp文件,一个.h文件关联了两个cpp文件,问题就出在多出来的哪个,删掉就好
project \settings \link\generate debug info(check it)