1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| 1. file 分析文件的基本格式 2. ldd 查看二进制文件的动态链接库信息 3. nm 可以列出二进制文件的动态库、静态库中的符号信息,包括符号的类型、符号的名称,比如函数名,全局变量等 nm -a | grep xxx nm -D 查看动态库符号信息 4. strings 查看二进制文件的字符串信息。strings会把任何可打印字符串都显示出来,比nm的内容更多 5. objdump 将二进制代码转为汇编指令 如果程序是以 -g -o0 等调试不优化的情况下,用 objdump -S 指令可以尽可能还原源代码信息,其实也可以理解这些信息是完整的在可执行文件中,要不然gdb调试的时候无法单步追踪 6. readelf 读取ELF文件格式。通过file文件可以查看文件格式。使用readelf指令可以方便分析ELF文件结构,比如节信息,elf头文件信息 7. ltrace 跟踪进程调用库函数过程 可以查看程序执行的时候调用库函数信息,还可以在线查看执行的进程的库函数调用情况 ltrace -T 查看调用时间开销 ltrace -t/-tt/-ttt 查看调用绝对时间,t越多越精确 ltrace -S 查看系统调用信息 8. strace strace 和 ltrace 命令差不多,strace 更偏向系统调用的追踪或信息产生的情况 可以指定系统调用的类型 -e trace=set 只跟踪指定的系统 调用.例如:-e trace=open,close,rean,write表示只跟踪这四个系统调用.默认的为set=all. -e trace=file 只跟踪有关文件操作的系统调用. -e trace=process 只跟踪有关进程控制的系统调用. -e trace=network 跟踪与网络有关的所有系统调用. -e strace=signal 跟踪所有与系统信号有关的 系统调用 -e trace=ipc 跟踪所有与进程通讯有关的系统调用 -e abbrev=set 设定 strace输出的系统调用的结果集.-v 等与 abbrev=none.默认为abbrev=all. -e raw=set 将指 定的系统调用的参数以十六进制显示. -e signal=set 指定跟踪的系统信号.默认为all.如 signal=!SIGIO(或者signal=!io),表示不跟踪SIGIO信号. -e read=set 输出从指定文件中读出 的数据.例如: -e read=3,5 -e write=set 9. gdb 调试
|