You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GDB无法映射符号文件至剥离符号的可执行文件,无法设断点求助

解决GDB无法加载分离调试符号的问题

你的操作错误出在调试符号提取环节:strip --strip-debug a.out -o a.out.debug并非提取符号,而是移除a.out中的调试符号,将剥离后的无符号文件输出到a.out.debug。后续又执行strip a.out剥离原文件符号,最终导致两个文件都没有调试信息,GDB自然无法识别main函数。

正确的调试符号分离流程

  • 编译生成带调试符号的可执行文件:
    gcc -g file.c
    
  • 提取调试符号到单独文件:
    objcopy --only-keep-debug a.out a.out.debug
    
  • 剥离原可执行文件的调试符号:
    strip --strip-debug a.out
    
  • 建立可执行文件与符号文件的关联:
    objcopy --add-gnu-debuglink=a.out.debug a.out
    

验证操作

完成上述步骤后,直接启动GDB:

gdb a.out

GDB会自动加载同目录下的a.out.debug符号文件,此时执行b main即可正常设置断点。

若符号文件不在可执行文件同目录,可通过set debug-file-directory /path/to/symbols指定目录,但需确保符号文件名与可执行文件的关联信息匹配。

内容的提问来源于stack exchange,提问作者Franc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 11:50:46