一般在調用./configure時,可以通過設置CXXFLAGS或者CFLAGS使程序可以支持調試,就是可以用GDB查看程序運行的信息,但在cmake編譯時,在cmake過程和后面的make及make install都無法加入調試信息。
采用 $ gdb 調試時 出現 如下 錯誤:
(no debugging symbols found)
其實是可以讓cmake在編譯時支持gdb調試的,可以通過如下方法來進行設置:
在CMakeLists.txt中加入如下:
1 SET(CMAKE_BUILD_TYPE "Debug") 2 SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb") 3 SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
原因是CMake 中有一個變量 CMAKE_BUILD_TYPE ,可以的取值是 Debug Release RelWithDebInfo >和 MinSizeRel。
當這個變量值為 Debug 的時候,CMake 會使用變量 CMAKE_CXX_FLAGS_DEBUG 和 CMAKE_C_FLAGS_DEBUG 中的字符串作為編譯選項生成 Makefile;
然后重新cmake之后再make就可以通過gdb執行生成的可執行文件了。
