当elf文件包含调试信息时,Eclipse会抱怨"没有加载符号表"

Chr*_*Xia 5 eclipse gdb stm32 symbol-table

我正在研究STM32处理器.使用readelf -w,可以从我的elf文件中提取大量的调试信息.输出的一小部分如下所示:

 <1><3faf>: Abbrev Number: 30 (DW_TAG_variable)
    <3fb0>   DW_AT_name        : (indirect string, offset: 0x24e): ITM_RxBuffer 
    <3fb4>   DW_AT_decl_file   : 19 
    <3fb5>   DW_AT_decl_line   : 1742   
    <3fb7>   DW_AT_type        : <0x3f48>   
    <3fbb>   DW_AT_external    : 1  
    <3fbc>   DW_AT_declaration : 1
Run Code Online (Sandbox Code Playgroud)

dwarfdump还确认调试信息在elf文件中可用.

我使用以下软件包:Eclipse Juno arm-2011.03/bin/arm-none-eabi-gdb OpenOCD和JTAG密钥

生成elf文件后,将其刻录到STM32处理器中,然后在Eclipse中启动调试会话.JTAG可以启动和停止,所以我猜OpenOCD deamon很好.由于"未加载符号表"这一事实,无法设置断点.一两件事我注意到的是其中"可变/ breakponts /注册/模块"窗口,显示加载的elf文件的模块选项卡包含followiing细节:类型:可执行符号:未加载符号文件:BuildResult.elf

在调试配置 - >启动选项卡中,选中/取消选中"加载图像/加载符号"没有区别.我想知道eclipse如何将elf文件包含符号信息加载到调试过程中?

任何建议,提示,非常感谢.

小智 0

这主要是由于您的程序未使用调试信息进行编译所致。为了解决这个问题,

  1. 关闭所有优化(如果存在这样的选项,请使用优化进行调试)
  2. 根据您的工具链和使用的编译器/调试器,将需要启用更多开关。一种常见的方法是-ggdb用于 gdb 调试。

此外,很高兴知道 -g以本机格式(stabs、COFF、XCOFF 或 DWARF 2)生成调试信息。

-ggdb生成 gdb 友好的调试信息

-ggdb3产生额外的调试信息