【发布时间】:2011-12-20 21:48:32
【问题描述】:
有什么方法可以只使用 cmake 为 gdb 创建符号表吗?
【问题讨论】:
标签: cmake debug-symbols
有什么方法可以只使用 cmake 为 gdb 创建符号表吗?
【问题讨论】:
标签: cmake debug-symbols
将此行添加到文件CMakeLists.txt:
set(CMAKE_BUILD_TYPE Debug)
【讨论】:
-g 添加调试符号的标志后会增加。
在优化的发布模式下编译,但添加了调试符号,对分析很有用:
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ...
或不优化编译并添加调试符号:
cmake -DCMAKE_BUILD_TYPE=Debug ...
【讨论】:
如果您需要调试符号进行分析,请将其粘贴到CMakeLists.txt:
set(CMAKE_BUILD_TYPE RelWithDebInfo)
【讨论】:
如果您使用的是 QtCreator,请删除(或注释掉)任何包含 CMAKE_BUILD_TYPE 的行:
# set(CMAKE_BUILD_TYPE Debug)
# set(CMAKE_BUILD_TYPE Release) <- comment out such lines
原因:如果您在 CmakeLists.txt 中明确设置 CMAKE_BUILD_TYPE,QtCreator 将不允许您设置任何其他目标。
【讨论】:
为gdb 生成调试信息的常用方法是将-g 传递给gcc 或g++ 编译器(以及在链接时)。
查看Cmake FAQ 了解如何获取可调试的可执行文件。
【讨论】:
cmake 特定的问题。我认为它们是一些 Linux 实用程序(可能与 binutils 相关),用于从 ELF 可执行文件中提取调试信息,但我从未使用过它们。 moythreads.com/wordpress/2009/08/31/…