od,objdump,size,数据段

od

Traditional format specifications may be intermixed; they accumulate:

-A, –address-radix=RADIX 地址显示方式(进制)

output format for file offsets. RADIX is one of [doxn], for Decimal, Octal, Hex or None
o –8
d –10
x –16
n –不显示

加上-v, --output-duplicates do not use * to mark line suppression

e.g.

od -A o hello

-t, –format=TYPE

select output format or formats
   -a     same as -t a,  select named characters, ignoring high-order bit

   -b     same as -t o1, select octal bytes

   -c     same as -t c,  select ASCII characters or backslash escapes

   -d     same as -t u2, select unsigned decimal 2-byte units

   -f     same as -t fF, select floats

   -i     same as -t dI, select decimal ints

   -l     same as -t dL, select decimal longs

   -o     same as -t o2, select octal 2-byte units

   -s     same as -t d2, select decimal 2-byte units

   -x     same as -t x2, select hexadecimal 2-byte units

-w 10 显示10列, 默认占满屏幕

e.g.

$ od -Ao -tc -w16 hello
0000000 h e l l o w o r l d ! \n \t e n
0000020 d . \n
0000023

size

size a.out
text data bss dec hex filename
1225 288 12 1525 5f5 a.out

内存程序映像,进程地址空间中各个段的作用如下:

1、文本段(text):包含程序的指令,它在程序的执行过程中一般不会改变。一般是在进程之间共享的. 比如一个进程fork出一个子进程时, 父子进程共享text段, 子进程获得父进程数据段, 堆, 栈的拷贝.const修饰的全局变量、字符串常量保存在文本段中。但const修饰的局部变量保存在堆栈段中。

2、数据段(data):用来存放程序中已初始化的全局变量以及他们的值的一块内存区域。数据段属于静态内存分配。其内容由程序初始化。

3、BSS段(Block Started by Symbol):包含未经初始化的全局变量(具体体现为一个占位符)和静态变量,BSS segment属于静态内存分配。由操作系统初始化,故不占用可执行文件空间,只是记录数据所需空间的大小。

4、堆栈段(heap,stack):heap动态内存分配(malloc,free用到这里)。stack包含了函数内部声明的局部变量。

objdump :< 占 位 >

你可能感兴趣的:(Linux)