有时候程序过大时,用Debug在VS下调试速度过慢,变换成release版本。
需要确保每一个工程都有如下配置,例如你想调试Recog工程下的某个CPP文件。那么只对cup工程release的配置是不够的,也需要对Recog工程有这个配置。
具体操作如下:
- C++>General->Debug Information Format->Program Database (/Zi)
- C++>Optimization->Optimization->Disabled (/Od)
- Linker->Debugging->Generate Debug Info->Yes (/DEBUG)
- Linker->Debugging->Generate Program Database File->$(TargetDir)$(TargetName).pdb
注:VS调试时断点无法进入或命中的原因及解决方法(PDB引发的)
在使用VS开发时,有时断点会无法进入,特别是在一个项目中引用另一个类库项目时。解决办法:重新生成解决方案或者先清理解决方案再生成解决方案。
那么为什么会造成这种情况呢?这时因为调试时使用的是PDB(Program Database)文件,而当我们在类库中修改代码后,由于没有重新编译,会使用上次的PDB文件,这样就造成了原来的PDB和新的代码文件不匹配,自然调试时也就无法正确进入断点。
有时断点会跳到其他的位置,是因为断点是定位在代码的行上的,而PDB文件中记录了代码的行数,但是PDB文件却没有更新,所以当我们强行将断点处的代码设置"允许源代码与原始版本不同"时,如果依旧使用上一次的PDB文件,自然断点的行数就定位到了上次记录的代码行数,所以断点就会往后跳了。