Qt Creator中force_debug_info与separate_debug_info构建选项相关问题
Qt 分离调试符号配置常见问题解答
符号文件后缀
不同平台下后缀规则不同:
- Linux 平台:默认后缀为
.debug,符合预期格式 - Windows 平台:生成标准
.pdb调试符号文件 - macOS 平台:生成
.dSYM格式的符号 bundle
符号文件存放目录
默认生成路径与最终输出的可执行文件/二进制库同目录,如果你开启了Qt Creator的影子构建功能,文件会落在影子构建的输出目录下,和不带符号的二进制文件放在同一级。
未生成符号文件的排查方案
如果没有观测到对应符号文件,按以下优先级排查:
- 确认qmake配置参数正确添加,需要在.pro文件中加入以下配置:
注意不要额外添加# 保留调试信息编译参数 QMAKE_CFLAGS += -g QMAKE_CXXFLAGS += -g # 开启强制生成调试信息+分离符号配置 CONFIG += force_debug_info separate_debug_infoCONFIG += release_with_debug_info,该配置会把符号直接嵌入二进制文件,不会生成分离的符号文件。 - 确认项目没有额外strip操作:部分自定义构建脚本会在构建完成后自动对二进制执行strip操作,会同时删除分离好的符号文件,检查Qt Creator构建步骤中的自定义执行脚本即可。
- 不要使用纯
CONFIG += release配置:纯release配置会默认剔除所有调试相关编译参数,会覆盖你添加的force_debug_info配置,只需要在默认release配置基础上额外添加上述参数即可,不会引入debug配置的体积膨胀问题,生成的无符号二进制体积和普通release版本一致。
GDB加载符号调试coredump说明
gdb默认会自动读取和可执行文件同目录下的.debug后缀符号文件,直接执行gdb 你的可执行文件路径 core文件路径即可自动加载符号完成调试。如果符号文件放在其他目录,可以在gdb交互界面执行set debug-file-directory 符号文件所在目录手动指定加载路径。
内容的提问来源于stack exchange,提问作者Raghav Navada
相关产品推荐
相关产品推荐

