【问题标题】:(C++ Builder) DWARF debug info in separate file?(C++ Builder)DWARF 调试信息在单独的文件中?
【发布时间】:2015-02-26 01:53:54
【问题描述】:

有没有办法指示 C++ Builder 的链接器在独立文件中输出 DWARF 调试信息(64 位 C++ 应用程序),而不是将其直接注入可执行文件? IE。类似于“将调试信息放在单独的 TDS 文件中”的选项(不适用于 DWARF 调试格式)。

如果没有这样的选项 - 有没有办法从已编译的可执行文件中删除信息?

【问题讨论】:

    标签: c++builder dwarf


    【解决方案1】:

    假设您在使用 GNU Binutils 的平台上,您可以使用 objcopy 将 DWARF 信息提取到单独的文件中作为编译后步骤。如果您愿意,可以使用strip 从可执行二进制文件中删除调试信息。

    【讨论】:

      【解决方案2】:

      要将调试信息放在单独的文件中,请按照以下步骤操作

      // Build    
      $ clang -O2 -g -o hello.full hello.c
      
      // Package hello.stripped is run as "hello" in production environment
      $ strip -o hello.stripped hello.full
      
      // Extract debug info to separate file
      $ objcopy --only-keep-debug hello.full hello.debug
      
      // Create a section which contains a reference to debug file 
      $ objcopy --strip-debug --add-gnu-debuglink=hello.debug hello.full hello
      
      // Debug - GDB automatically reads hello.debug
      $ gdb hello
      . . .
      Reading symbols from ./hello...
      Reading symbols from /homes/syrajendra/hello.debug...done.
      (gdb)
      
      // Core from hello.stripped
      $ gdb --core core-file --exec hello
      

      【讨论】:

        猜你喜欢
        • 2014-05-15
        • 1970-01-01
        • 2011-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-05
        • 2015-09-15
        • 2016-05-15
        相关资源
        最近更新 更多