请阅读【ARM GCC 编译专栏导读】
上篇文章:ARM 嵌入式 编译系列 10.1 – GCC 编译缩减可执行文件 elf 文件大小
下篇文章:ARM 嵌入式 编译系列 10.3 – GNU elfutils 工具小结
符号表与可执行程序分离
接着上篇文章 ARM 嵌入式 编译系列 10.1 – GCC 编译缩减可执行文件 elf 文件大小 介绍,在前两篇文章中我们去掉了 可执行文件 test
中的很多内容,节省了大量的空间。由于我们把符号表也移除了,发生了coredump 我们通过gdb
工具也无法调试了。
Q: 那么我们是否可以把符号表信息保留,需要用符号表的时候在将符号表的信息导入?
A:可以。
方法一 使用eu-strip
eu-strip
可以把文件的符号表保存起来,需要用的时候,导入需要的符号表就能调试 coredump文件了。文章来源:https://www.toymoban.com/news/detail-648297.html
- 生成 release 版本的 test:
gcc -o test test.c
- 然后用
eu-strip
生成符号表:
eu-strip test -f test.sym
使用 eu-strip
生成的test.sym
后,可执行文件 test
中会多出多一个.gnu_deubg_link
section,用来记录符号表的位置。文章来源地址https://www.toymoban.com/news/detail-648297.html
:~/temp$ readelf -S test
There are 30 section headers, starting at offset 0x3168:
...
[25] .data PROGBITS 0000000000004000 00003000
0000000000000010 0000000000000000 WA 0
到了这里,关于【ARM 嵌入式 编译系列 10.2 -- 符号表与可执行程序分离详细讲解】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!