原文链接 编译 nm:列出目标文件中的符号。 objdump:显示目标文件中的详细信息。 readelf:显示关于 ELF 目标文件的信息。 参考 清单 1. hw.c 程序 #include <stdio.h> ...
GCC把C语言源文件 .c 编译成汇编语言文件 .s ,汇编器把汇编语言文件翻译成目标文件 .o ,最后由链接器链接所有的目标文件和有关的库生成可执行文件 a.out 。 如打开 g 选项,GCC编译 .c 文件时,把附加的调试信息插进 .s 文件,这些调试信息经汇编器和链接器稍加转换一直传到可执行文件中。这些调试信息包括行号 变量的类型和作用域 函数名字 函数参数和函数的作用域等源文件的特性。 ...
2020-06-15 14:35 0 658 推荐指数:
原文链接 编译 nm:列出目标文件中的符号。 objdump:显示目标文件中的详细信息。 readelf:显示关于 ELF 目标文件的信息。 参考 清单 1. hw.c 程序 #include <stdio.h> ...
Date: 2018.7.18 1、参考: https://www.jianshu.com/p/863b279c941e https://sourceware.org/binutils/docs/binutils/nm.html 2、Linux中目标文件解析的三个命令 ...
最近在调试一些问题,发现几个命令很实用,记录一下。 一 背景 也许大家都遇到过这种场景,就是有二进制代码,比如深度分析下此文件到底是什么格式的图片等,这篇文章就记录我分析下二进制 ...
一、需求分析so 的崩溃并不像 Java 代码那么好定位,我们通常看到的就只是 so 中的一大段崩溃的堆栈信息。那么我们怎么通过这个堆栈信息来定位我们的问题呢? 二、addr2line1. 介绍Addr2line 工具(它是标准的 GNU Binutils 中的一部分)是一个可以将指令的地址 ...
其实问题的本质是对elf格式的理解问题,因为是查看so库的符号表发现的问题。 事情起因是这样的,由于我的一个程序编译的时候出现了undefined reference to “XXX”的错误,需要链接特定的so库,发现用nm [file]找不到“XXX”函数符号,结果用readelf -s ...
ELF文件包括: (1)可重定位的目标文件 (2)可执行的目标文件 (3)可被共享的目标文件 可以用file命令来看目标文件是否是ELF文件 在linux下,用readelf来看ELF头部或者其它各section的内容,用objdump来对指定的内容(.text ...
转载地址:https://www.jianshu.com/p/c2e2b8f8ea0d addr2line工具是一个可以将指令的地址和可执行映像转换为文件名、函数名和源代码行数的工具。这在内核执行过程中出现崩溃时,可用于快速定位出出错的位置,进而找出代码的bug。 用法 ...
readelf:-h:文件头-S:段表-s:符号表-d: 查看依赖库-p:查看某个段内容,非常重要。如:readelf -p .comment libc.so (通过-p对只读段的查看就可以替代strings命令) objdump:-d:反汇编(objdump我基本只用这一个)-h:段表 ...