(C ++ Builder)DWARF调试信息在单独的文件中?

时间:2015-02-26 01:53:55

标签: c++builder dwarf

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

// 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