如何使用CMake启用gdb -g3调试级别?



当你想在CMake上启用调试时,你使用cmake .. -DCMAKE_BUILD_TYPE=Debug,但这只设置-g,这是默认的调试级别。

-glevel请求调试信息,并使用level指定多少信息。默认级别为2。

级别0根本不产生调试信息。因此,-g等于-g。

第1级产生的信息很少,足以在零件中进行回溯您不打算调试的程序的。这包括以下描述函数和外部变量,但没有关于本地的信息变量,没有行号。

第3级包含额外的信息,比如所有的宏定义在节目中。某些调试器在使用时支持宏展开g3 .

如何使cmake .. -DCMAKE_BUILD_TYPE=Debug设为-g3而不是-g?

  1. https://stackoverflow.com/a/864902/4934640
  2. 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")

引用:

  1. 修改CMake中CMAKE_CXX_FLAGS_DEBUG和friends的默认值
  2. CMake -编译/MT而不是/MD

设置CMAKE_C_FLAGS "-Og -g3 ...

最新更新