Open arthur-zhang opened 4 years ago
Linux 可执行文件格式
可执行链接文件格式:ls, xx.out, xx.so, xx.core, xx.o
ulimit -c unlimit 取消core文件大小限制
kill -s sigsegv `pidof a.out` 发送信号给特定进程
readelf -l a.out 查看elf
size a.out 查看段大小
objdump -x a.out 查看程序变量位置
pmap -x `pidof a.out` 查看进程内存布局
smaps `pidof a.out`
cat /proc/`pidof a.out`/maps
cat /proc/`pidof a.out`/smaps
32个分节(section)
.text
.bss
.data
.rodata
ELF(可执行文件)——进程(运行时的可执行文件)——内存 文件格式映射为内存布局
gcc -g demo1.c
gdb a.out
b main 在main打断点
r 运行
n next,下一步
p a 打印a, p/x a 打印a的16进制,p/s a 字符串格式打印a
(1)ELF是一种文件格式,用于存储linux程序,
主要包括
(1)目标文件(通常是.o);
(2)可执行文件(我们的运行文件)
(3)动态库(.so)
ELF文件以 Section的形式进行存储。代码编译后的指令放在代码段(Code Section),全局变量和局部静态变量放到数据段(Data Section)
其中, .text段保存代码编译后的指令 .data段保存的是已经初始化了的全局静态变量和局部静态变量 .rodata段存放的是只读数据,包括const修饰的变量和字符串常量等 readelf -h a.out 可以查看文件头信息 readelf -S a.out 可以查看各段信息 objdump -x -s a.out 可以查看各段的数据
1030
ELF 文件:
ELF (Executable and Linkable Format)是一种为可执行文件,目标文件,共享链接库和内核转储(core dumps)准备的标准文件格式
executable file: 可执行文件,wget, ls
rlocatable:可重定位的目标文件.o 文件
shared object : 共享链接库 .so 文件
Core dump file .core:当前进程退出的core dump
outPut