如何使用 CMake 启用 gdb -g3 调试级别?
Posted
技术标签:
【中文标题】如何使用 CMake 启用 gdb -g3 调试级别?【英文标题】:How to enabled gdb -g3 debug level with CMake? 【发布时间】:2021-02-11 02:24:08 【问题描述】:如果您想在 CMake 上启用调试,请使用 cmake .. -DCMAKE_BUILD_TYPE=Debug
,但这只会设置默认调试级别 -g
。
-glevel 请求调试信息并使用 level 指定多少信息。默认级别为 2。
Level 0 根本不产生任何调试信息。因此,-g0 否定 -g。
级别 1 产生最少的信息,足以在部分中进行回溯 您不打算调试的程序。这包括说明 函数和外部变量,但没有关于本地的信息 变量,没有行号。
第 3 级包括额外信息,例如存在的所有宏定义 在节目中。某些调试器在您使用时支持宏扩展 -g3.
如何使cmake .. -DCMAKE_BUILD_TYPE=Debug
设置为-g3
而不是-g
?
-
https://***.com/a/864902/4934640
https://sourceware.org/bugzilla/show_bug.cgi?id=11067
【问题讨论】:
【参考方案1】:设置CMAKE_C_FLAGS "-Og -g3 ...
【讨论】:
你能举个例子吗?即cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_FLAGS "-Og -g3"
?
我在cmake文件中设置set(CMAKE_C_FLAGS "-Og -g3 ...
通常当我设置g3时我优化-Og(不是所有目标都支持,但arm-none-eabi肯定支持)【参考方案2】:
你也可以设置CMAKE_CXX_FLAGS_DEBUG
,这样只会在CMake在Debug模式下编译时影响代码:
set(CMAKE_CXX_FLAGS_DEBUG "$CMAKE_CXX_FLAGS_DEBUG -g3 -ggdb")
参考资料:
-
Change default value of CMAKE_CXX_FLAGS_DEBUG and friends in CMake
CMake - compile with /MT instead of /MD
【讨论】:
以上是关于如何使用 CMake 启用 gdb -g3 调试级别?的主要内容,如果未能解决你的问题,请参考以下文章