赞
踩
问题可能原因有:
CMakeLists.txt
设置成了 Release
模式;CMakeLists.txt
在设置成 Debug
以后,调试时能够停下来,但没在断点处停下,而是停在了别的地方,这就是代码编译优化导致的了。应该是 CMakeLists.txt
中添加了 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
,测试发现 O1
、O2
、O3
都会出现同样的问题。也就是说,任何级别的优化都会带来代码结构的改变,会使目标代码的执行顺序变得面目全非,导致调试信息严重不足。
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
能解决问题,但是亲测若添加了代码编译优化,是没办法解决这问题的。程序运行前:
程序运行后:
可以在 CMakeLists 中将 Debug 和 Release 使用 CMAKE_CXX_FLAGS_DEBUG
和 CMAKE_CXX_FLAGS_RELEASE
区分开来。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。