【问题标题】:How to enabled gdb -g3 debug level with CMake?如何使用 CMake 启用 gdb -g3 调试级别?
【发布时间】: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?

  1. https://stackoverflow.com/a/864902/4934640
  2. https://sourceware.org/bugzilla/show_bug.cgi?id=11067

【问题讨论】:

    标签: c++ c debugging cmake gdb


    【解决方案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")
    

    参考资料:

    1. Change default value of CMAKE_CXX_FLAGS_DEBUG and friends in CMake
    2. CMake - compile with /MT instead of /MD

    【讨论】:

      猜你喜欢
      • 2012-04-17
      • 1970-01-01
      • 2017-01-19
      • 2022-09-29
      • 2021-11-02
      • 2017-01-30
      • 2019-09-30
      • 2012-05-15
      • 2023-03-14
      相关资源
      最近更新 更多