Linux下查看.so和可执行文件是否debug编译
如何判断一个.so是否是debug编译的?
如果用此方法:用file来查看一个.so, 根据是否包含”not stripped”来判断该.so是否是debug编译的。然而stripped/not stripped并不是debug/release编译的判断标准. 对debug和release的.so运行file后可得出几乎相同的输出, 都是not stripped。所以此方法是不准确的。
debug/release的区别更多的表现在.so和可执行程序所拥有的段上。debug编译出来的.so和可执行程序拥有很多附加的段来包含哪些debug的信息。所以查看段信息是一种判断的方式。
对同一个开源软件进行debug和release编译, 并且查看某个.so的段(readelf -S)
> readelf -S 文件名
- 1
发现release编译的只有29个段:
There are 29 section headers, starting at offset 0x1b7d78:Section Headers:
[Nr] Name Type Address Offset
Size EntSize Flags Link Info Align
[ 0] NULL 0000000000000000 00000000 0000000000000000 0000000000000000 0 0 0 [ 1] .note.gnu.build-i NOTE 00000000000001c8 000001c8 0000000000000024 0000000000000000 A 0 0 4 [ 2] .gnu.hash GNU_HASH 00000000000001f0 000001f0 0000000000003430 0000000000000000 A 3 0 8 [ 3] .dynsym DYNSYM 0000000000003620 00003620 000000000000b400 0000000000000018 A 4 2 8 [ 4] .dynstr STRTAB 000000000000ea20 0000ea20 00000000000083e2 0000000000000000 A 0 0 1 [ 5] .gnu.version VERSYM 0000000000016e02 00016e02 0000000000000f00 0000000000000002 A 3 0 2 [ 6] .gnu.version_r VERNEED 0000000000017d08 00017d08 0000000000000080 0000000000000000 A 4 2 8 [ 7] .rela.dyn RELA 0000000000017d88 00017d88 0000000000009570 0000000000000018 A 3 0 8 [ 8] .rela.plt RELA 00000000000212f8 000212f8 00000000000080d0 0000000000000018 A 3 10 8 [ 9] .init PROGBITS 00000000000293c8 000293c8 0000000000000018 0000000000000000 AX 0 0 4 [10] .plt PROGBITS 00000000000293e0 000293e0 00000000000055f0 0000000000000010 AX 0 0 4 [11] .text PROGBITS 000000000002e9d0 0002e9d0 0000000000144658 0000000000000000 AX 0 0 16 [12] .fini PROGBITS 0000000000173028 00173028 000000000000000e 0000000000000000 AX 0 0 4 [13] .rodata PROGBITS 0000000000173040 00173040 000000000001e9a0 0000000000000000 A 0 0 32 [14] .eh_frame_hdr PROGBITS 00000000001919e0 001919e0 000000000000427c 0000000000000000 A 0 0 4 [15] .eh_frame PROGBITS 0000000000195c60 00195c60 0000000000017d7c 0000000000000000 A 0 0 8 [16] .ctors PROGBITS 00000000003ae1e8 001ae1e8 0000000000000010 0000000000000000 WA 0 0 8 [17] .dtors PROGBITS 00000000003ae1f8 001ae1f8 0000000000000010 0000000000000000 WA 0 0 8 [18] .jcr PROGBITS 00000000003ae208 001ae208 0000000000000008 0000000000000000 WA 0 0 8 [19] .data.rel.ro PROGBITS 00000000003ae220 001ae220 0000000000005b38 0000000000000000 WA 0 0 32 [20] .dynamic DYNAMIC 00000000003b3d58 001b3d58 00000000000001a0 0000000000000010 WA 4 0 8 [21] .got PROGBITS 00000000003b3ef8 001b3ef8 00000000000010e8 0000000000000008 WA 0 0 8 [22] .got.plt PROGBITS 00000000003b4fe8 001b4fe8 0000000000002b08 0000000000000008 WA 0 0 8 [23] .data PROGBITS 00000000003b7b00 001b7b00 0000000000000158 0000000000000000 WA 0 0 32 [24] .bss NOBITS 00000000003b7c58 001b7c58 0000000000000010 0000000000000000 WA 0 0 8 [25] .comment PROGBITS 0000000000000000 001b7c58 000000000000002a 0000000000000001 MS 0 0
转载于:https://www.cnblogs.com/qiumingcheng/p/11195076.html
Linux下查看.so和可执行文件是否debug编译相关推荐
- Linux下查看磁盘挂载的三种方法
Linux下查看磁盘挂载的三种方法 2009-06-05 23:17 好久没有更新日志了,呵呵.不是没有要写的东东.实在抽不出时间来写,要准备公司的考试呢,C++考试.已经有七个月没有写C++代码了, ...
- Linux下查看TOMCAT控制台
Linux下查看TOMCAT控制台 $ ./catalina.sh run 就可以了. debug模式: $ ./catalina.sh debug ...... help (查看帮助) exit(退 ...
- linux环境下查看进程,Linux下查看进程(程序)启动时的环境变量
背景: 因最近试安装Linux下的jira,有一个中文插件安装后,一旦设置开机启动后,它是英文,而在终端再重新启动一次后呢,似乎插件生效,它又恢复为正常中文界面,我首先想这这涉及到一个环境变量的问题, ...
- linux 下查看某个端口是否打开,linux如何查看某个端口是否开放
1.你可以使用 lsof 命令来查看某一端口是否开放.查看端口可以这样来使用,我就以80端口为例: lsof -i:80 或者 lsof -i:22 如果有显示说明已经开放了,如果没有显示说明没有开放 ...
- linux下查看内存使用情况
在Linux下查看内存我们一般用free命令: [root@scs-2 tmp]# free total used free shared ...
- Linux下查看系统信息
目录 1. CPU信息 1. 查看物理CPU的个数 2. 查看逻辑CPU的个数 3. 查看CPU是几核 4. 查看CPU的主频 5. 查看CPU型号及个数 6. 查看系统核心数 7. cpu的运行模式 ...
- linux下查看GPU版本和详情信息 CUDA版本信息 anaconda版本信息
查看GPU型号 lspci | grep -i nvidia 查看NVIDIA驱动版本 sudo dpkg --list | grep nvidia-* # lspci | grep -i nvidi ...
- linux下查看文件编码及修改编码
linux下查看文件编码及修改编码 查看文件编码 在Linux中查看文件编码可以通过以下几种方式: 1.在Vim中可以直接查看文件编码 :set fileencoding 即可显示文件编码格式. 如果 ...
- linux下查看和添加PATH环境变量
linux下查看和添加PATH环境变量 $PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻编译链接. 编辑你的 PA ...
最新文章
- Python基础教程:in和not in操作
- Python3 函数(方法)
- MOSS2010站点大文件上传设置
- 微信小程序开发之路(一)
- FMDB数据库框架的是使用
- Linux:yum配置和使用
- HTML Agility Pack 搭配 ScrapySharp,彻底解除Html解析的痛苦
- python语法学习第一天--变量、运算符、数据类型
- MySQL Password Expired
- javascript监听输入框_js监听输入框值的即时变化onpropertychange、oninput
- cannot retry due to redirection, in streaming mode
- hexo WARN No layout: index.html
- 蚂蚁安全键盘空白或应该显示安全键盘却显示的系统键盘的问题(iOS中时间佛历如何转换为公历)
- oracle 导出空行,oracle sqlplus空行处理方法
- RGB-D、TOF深度相机的原理
- 行内元素、块元素、行内块元素的区别
- 计算机硬件加速怎么开,怎么开启显卡硬件加速?开启显卡硬件的加速功能步骤...
- 查看win信任的证书办法机构(CA机构的公钥)
- OSI/RM各层功能—物理层、数据链路层
- pycharm 自动更正_如何在Android的自动更正词典中添加单词或短语