当你想在CMake上启用调试时,你使用cmake .. -DCMAKE_BUILD_TYPE=Debug
,但这只设置-g
,这是默认的调试级别。
-glevel请求调试信息,并使用level指定多少信息。默认级别为2。
级别0根本不产生调试信息。因此,-g等于-g。
第1级产生的信息很少,足以在零件中进行回溯您不打算调试的程序的。这包括以下描述函数和外部变量,但没有关于本地的信息变量,没有行号。
第3级包含额外的信息,比如所有的宏定义在节目中。某些调试器在使用时支持宏展开g3 .
如何使cmake .. -DCMAKE_BUILD_TYPE=Debug
设为-g3
而不是-g
?
- https://stackoverflow.com/a/864902/4934640
- https://sourceware.org/bugzilla/show_bug.cgi?id=11067
你也可以设置CMAKE_CXX_FLAGS_DEBUG
,所以它只在CMake在调试模式下构建时影响代码:
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g3 -ggdb")
引用:
- 修改CMake中CMAKE_CXX_FLAGS_DEBUG和friends的默认值
- CMake -编译/MT而不是/MD
设置CMAKE_C_FLAGS "-Og -g3 ...