有没有办法指示C ++ Builder的链接器在独立文件中输出DWARF调试信息(64位C ++应用程序),而不是直接将其注入可执行文件?即类似于&#34的选项;将调试信息放在单独的TDS文件中" (这对DWARF调试格式不起作用)。
如果没有这样的选项 - 有没有办法从已编译的可执行文件中删除信息?
答案 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