ELF以及debug

常用指令:

1、ldd -v  显示依赖库信息

  共享库配置信息/etc/ld.so.confldconfig刷新系统的共享库缓存

2、nm  输出符号表信息

  字符代表意义:R 指read-only  D指data段  T指text段  S代表bss段

  -A 显示来自文件

  -n 按地址排序

3、objdump -d 反汇编

          -a 相当于ar

          -j .text -S a.out  查看text,并以源代码显示

 详细介绍http://man.linuxde.net/objdump

来自: http://man.linuxde.net/objdump

4、gprof  查看函数调用次数,消耗

5、addr2line  函数地址转换函数名

6、readelf -h elf文件头

        -S section头

        

理论:

1、elf三种文件

* 一个可重定位(relocatable)文件保存着代码和适当的数据,用来和其他的
  object文件一起来创建一个可执行文件或者是一个共享文件。
* 一个可执行(executable)文件保存着一个用来执行的程序;该文件指出了
  exec(BA_OS)如何来创建程序进程映象。
* 一个共享object文件保存着代码和合适的数据,用来被下面的两个链接器
  链接。

时间: 2024-12-13 11:17:58

ELF以及debug的相关文章

[Debug]linux elf文件格式

linux elf文件格式 浅谈Linux的可执行文件格式ELF Linux中ELF格式文件介绍

ELF Format 笔记(五)—— 特殊 Section

链接器把一些独立的 object files 和库文件链接起来,形成可执行文件.在这个过程中,链接器需要解决一些符号的引用以及指令的重定位. 除此之外,还有一个动态链接的过程.比如有些符号是定义在某个 so 文件中的,需要由动态链接器在装载的过程中进行一些符号查找和地址重定位的工作.要完成此工作,动态链接器需要一些信息,它们存储在一些特殊的 section 中,比如 .dynamic. section 和 segment 是分别针对链接视图和执行视图来说的,各种资料对他们的翻译比较混乱,慢慢就会

MPI Debug Tips

debug一个并行程序(parallel program)向来是件很麻烦的事情(Erlang等functional programming language另当别论), 对于像MPI这种非shared memory的inter-process model来说尤其如此. 与调试并行程序相关的工具 非开源工具 目前我所了解的商业调试器(debugger)有: TotalView Allinea DDT 据说parallel debug的能力很屌, 本人没用过表示不知,说不定只是界面做得好看而已. 不

elf文件格式和运行时内存布局

elf的类型: Linux下的可执行文件格式叫做elf,全称是Executable Linkable Format.其实不仅仅是可执行文件,linux中常见的目标文件有目标文件.o.可执行文件如/bin/bash.共享目标文件(.so).和核心转储文件core dump.可以使用file命令确定文件格式. elf的结构: 如其结构如下图所示: ELF file format: +---------------+ | File header | +---------------+ | .text

ELF文件的格式和加载过程

http://blog.csdn.net/lingfong_cool/article/details/7832896 (一) ELF 文件的格式       ELF 文件类型 (1) 可重定位文件( .o 目标文件) : 用于链接创建可执行文件或 so 文件 (2) 可执行文件                     : 用于执行 (3)so( 共享对象 ) 文件            : 用于链接 注 :   一个 Program Header 对应一个 Segment 一个 Section

.elf格式内容

arm-linux-ld 可以将程序链接成我们arm平台下的可运行的程序 以之前使用过的led程序为例: 首先: 1 arm-linux-gcc -g -c led.S (-g是表示产生调试信息, -c是表示只编译不链接) 产生led.o文件 1 arm-linux-ld -Tled.lds -o led.elf led.o 产生.elf格式的文件 然后通过: arm-linux-readelf命令:读出.elf的详细内容: 1 arm-linux-readelf -a led.elf(显示所有

ELF(Executable and Linkable Format)学习

目录 0. 引言 1. ELF文件格式 2. ELF格式分析工具 0. 引言 可执行链接格式(Executable and Linking Format)最初是由UNIX系统实验室(UNIX System Laboratories,USL)开发并发布的,作为应用程序二进制接口(Application Binary Interface,ABI)的一部分.ELF标准的目的是为软件开发人员提供一组二进制接口定义,这些接口可以延伸到多种操作环境,从而减少重新编码.重新编译程序的需要.接口的内容包括: 1

ELF格式文件符号表全解析及readelf命令使用方法

http://blog.csdn.net/edonlii/article/details/8779075 1. 读取ELF文件头: $ readelf -h signELF Header:  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00  Class:                                                  ELF64  Data:                            

目的檔格式 (ELF)

http://ccckmit.wikidot.com/lk:elf 目的檔ELF 格式(Executable and Linking Format) 是 UNIX/Linux 系統中較先進的目的檔格式.這種格式是 AT&T 公司在設計第五代UNIX (UNIX System V) 時所發展出來的.因此,ELF格式的主要文件被放在規格書 -『System V Application Binary Interface』的第四章的 Object Files當中 ,該文件詳細的介紹了 UNIX Syst