【问题标题】:Why there is no DWARF info?为什么没有 DWARF 信息?
【发布时间】:2016-11-17 04:04:13
【问题描述】:

我正在使用以下命令将源文件(hello.c)编译成可执行文件(hello),并希望转储出可执行文件的 DWARF 信息。但是,无论使用“readelf -wi hello”还是“llvm-dwarfdump hello”,都没有 DWARF 信息。我想知道哪里出错了。

clang-3.5 -gdwarf-4 -O0 -emit-llvm -c hello.c -o hello.bc
llc -dwarf-version=4 -O0 -filetype=obj hello.bc
gcc hello.o -o hello

【问题讨论】:

    标签: dwarf


    【解决方案1】:

    问题是由于 clang 和 llvm 不匹配造成的。我将 llvm-3.9 与 clang-3.5 一起使用。我通过将 clang-3.5 升级到 clang-3.9 来解决。具体来说,我在llvm_src/tools中添加了clang-3.9,然后重新编译了llvm。

    【讨论】:

      【解决方案2】:

      我用 clang-5.0 和 gcc-6.4.0 尝试了相同的命令似乎对我有用。

      $ llvm-dwarfdump hello | more
      hello:  file format ELF64-x86-64
      
      .debug_abbrev contents:
      Abbrev table for offset: 0x00000000
      [1] DW_TAG_compile_unit DW_CHILDREN_yes
          DW_AT_producer  DW_FORM_strp
          DW_AT_language  DW_FORM_data2
      . . .
      
      $ readelf -wi hello | more
      Contents of the .debug_info section:
      
        Compilation Unit @ offset 0x0:
        Length:        0x75 (32-bit)
        Version:       4
        Abbrev Offset: 0x0
        Pointer Size:  8
        <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
        . . .
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-14
        • 2014-05-15
        • 1970-01-01
        • 1970-01-01
        • 2014-04-27
        • 1970-01-01
        • 2012-11-01
        相关资源
        最近更新 更多