【问题标题】:Creating symbol table for gdb using cmake使用 cmake 为 gdb 创建符号表
【发布时间】:2011-12-20 21:48:32
【问题描述】:

有什么方法可以只使用 cmake 为 gdb 创建符号表吗?

【问题讨论】:

    标签: cmake debug-symbols


    【解决方案1】:

    将此行添加到文件CMakeLists.txt

    set(CMAKE_BUILD_TYPE Debug)
    

    【讨论】:

    • 这也会禁用优化。对于分析而不是调试,您通常需要优化和符号(又名 -g O2)。如何用 clang 做到这一点?
    • 我在我的 cmake 文件中添加了这个标志,但是我没有看到二进制文件的大小有任何差异,通常在添加 -g 添加调试符号的标志后会增加。
    【解决方案2】:

    在优化的发布模式下编译,但添加了调试符号,对分析很有用:

    cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ...
    

    或不优化编译并添加调试符号:

    cmake -DCMAKE_BUILD_TYPE=Debug ...
    

    【讨论】:

      【解决方案3】:

      如果您需要调试符号进行分析,请将其粘贴到CMakeLists.txt

      set(CMAKE_BUILD_TYPE RelWithDebInfo)
      

      【讨论】:

        【解决方案4】:

        如果您使用的是 QtCreator,请删除(或注释掉)任何包含 CMAKE_BUILD_TYPE 的行:

        # set(CMAKE_BUILD_TYPE Debug) 
        # set(CMAKE_BUILD_TYPE Release) <- comment out such lines 
        

        原因:如果您在 CmakeLists.txt 中明确设置 CMAKE_BUILD_TYPE,QtCreator 将不允许您设置任何其他目标。

        【讨论】:

          【解决方案5】:

          gdb 生成调试信息的常用方法是将-g 传递给gccg++ 编译器(以及在链接时)。

          查看Cmake FAQ 了解如何获取可调试的可执行文件。

          【讨论】:

          • 我只想要符号表可以吗?
          • 这可能是可能的,但这不是cmake 特定的问题。我认为它们是一些 Linux 实用程序(可能与 binutils 相关),用于从 ELF 可执行文件中提取调试信息,但我从未使用过它们。 moythreads.com/wordpress/2009/08/31/…
          • 当人们提出问题时,他们很少希望被指向手册。谢谢,但不,谢谢....
          • 这是一个 cmake 问题。使用 gcc 或 clang,在分析时,您通常启用符号和优化 (-g -O2)。而使用 clang,您可以在发布模式下启用优化,并在调试模式下启用符号。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-26
          • 1970-01-01
          • 2020-05-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多