今天遇到鬼,我的程序昨天设置断点时,还运行很正常,可是今天再在同样的地方设置断点时,就会出现: 
“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还是不行。 这到底是怎么回事?

解决方案 »

  1.   

    Edit-->BreakPoints--->RemoveAll!!
      

  2.   

    看看Setting的Debug里面的执行文件名字跟你输出文件的名字是否一致
      

  3.   

    project \settings \link\generate debug info(check it)
      

  4.   

    是所有的断点都设不了吗?
    还有设断点的地方是不是被优化掉了,比如
    if( FALSE )
    {
      int a = 0 ;
    }
      

  5.   

    有可能你现在看到的有断点的cpp其实并不是程序正在运行的cpp,而是另外一个副本(因为是副本所以两个文件基本一样,但是debug看到的文件却不是被编译的文件)。就是debug 关联到的文件和被编译的文件关联得不一样,有可能你一个cpp被保存成两份了。
      

  6.   

    lekonpeng 
    ----------------------------------
    有可能你现在看到的有断点的cpp其实并不是程序正在运行的cpp,而是另外一个副本(因为是副本所以两个文件基本一样,但是debug看到的文件却不是被编译的文件)。就是debug   关联到的文件和被编译的文件关联得不一样,有可能你一个cpp被保存成两份了。
    =========================
    严重同意~~~~
      

  7.   

    lekonpeng 兄说的好像有道理,怎么纠正过来呢?
      

  8.   

    CTRL+B 可以清除所有断点这个你应该检查DEBUG目录 
    把你编译指定的文件删除,重新编译就可以设断点
      

  9.   

    可能是断点位置没有被检查到,删除Debug目录清除所有断点重新设置断点。
    实在没法用OD解决——内存断点、硬中断,想怎么断就怎么断。
      

  10.   

    如果是我说的这种情况的话:
    查看你debug的文件名,被编译的文件名  是否一样  
    查看工程目录是否有奇怪的或者没有用到的文件 有的话 删除多的就可以了  
    特别是类的cpp文件,一个.h文件关联了两个cpp文件,问题就出在多出来的哪个,删掉就好
      

  11.   

    可以先换一个其他的工程断点调试,看看可不可以。如果也不行,那应该是设置问题。如果可以,那就可能是如lekonpeng所说的那样,cpp的问题,检查此cpp文件。
      

  12.   

    5楼正解
    project   \settings   \link\generate   debug   info(check   it)