GNU binutils工具集

objdump 反汇编各种格式的目标文件和可执行程序
eg.objdump  [option(s)] [file(s)]
常用选项:
     -d 只反汇编代码段
     -D 反汇编代码段和数据段
     -S 混合输出源代码和汇编代码,编译时必须加-g选项

 

 

readelf 显示ELF格式文件信息
eg.objdump  [option(s)] elf-file(s)
常用选项:
    -e 显示头信息,包括ELF file header、section header、program header
    -s 显示符号列表信息
    -r 显示重定位信息
    -a 显示所有信息

 

 

strip    删除出入文件的符号表和指定的section
eg.objdump  [option(s)] in-file(s)
常用选项:
    -o 指定输出文件名

 

 

ar     管理归档文件(*.a)
 常用命令:
        d m q r t x
分别用于删除、移动、添加、替换、显示、去除归档文件的内容
eg.
       ar x /usr/lib/libc.a 取出libc.a中的而所有目标文件(*.o)到当前目录
       ar q libmy.a obj1.o obj2.o 将obj1.o和obj2.o加入到libmy.a中

 

nm    显示文件的符号信息,可以用于各种目标文件、可执行程序和归档文件(.a)
eg.
    nm  /usr/lib/libc.a > symbol   输出如下信息
              nm: udiv_qrnnd.o: no symbols
              nm: old_atexit.o: no symbols
              nm: mp_clz_tab.o: no symbols
              nm: strncmp.o: no symbols
              nm: memcpy-ssse3.o: no symbols
              nm: mempcpy-ssse3.o: no symbols
              nm: memcpy-ssse3-rep.o: no symbols
              nm: mempcpy-ssse3-rep.o: no symbols
              nm: strncmp-ssse3.o: no symbols
              nm: strncmp-sse4.o: no symbols
              nm: strpbrk-c.o: no symbols
              nm: getopt_init.o: no symbols
              nm: init-posix.o: no symbols
              nm: lseek64.o: no symbols
              nm: oldgetrlimit64.o: no symbols
              nm: internal_accept4.o: no symbols
              nm: internal_recvmmsg.o: no symbols
              nm: getutmpx.o: no symbols

 

 

ldd     输出动态链接诶库程序的共享库依赖关系
eg.ldd  /bin/ls
        linux-gate.so.1 =>  (0x00d92000)
        libselinux.so.1 => /lib/libselinux.so.1 (0x00420000)
        librt.so.1 => /lib/librt.so.1 (0x005ac000)
        libacl.so.1 => /lib/libacl.so.1 (0x00bc6000)
        libc.so.6 => /lib/libc.so.6 (0x00da3000)
        libdl.so.2 => /lib/libdl.so.2 (0x00503000)
        /lib/ld-linux.so.2 (0x006cc000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00110000)
        libattr.so.1 => /lib/libattr.so.1 (0x005bc000)
 


gprof     根据程序执行产生的数据gmon.out输出profile信息,包括每个函数执行时间、所占比例、调用关系等。
                    可用于分析程序的关键代码,指导程序员进行优化
使用方法:
编译:加  -pg选项
         执行:产生gmon.out(二进制数据)
         显示:gprof  program_name > output
 

gcov     另一个profiling工具,可以分析程序一次执行过程中每行源代码的执行数量、branch跳转情况等
                  可应用于分析程序关键代码和构造testsuite 源代码在gcc的包中,不属于binutils
使用方法:
       编译:加  -fprofile-arcs  -ftest-coverage选项,最好不加优化选项
       执行:针对每个sourcefile产生sourcefile.bb、sourcefile.bbg、sourcefile.da(二进制数据)
       显示:gcov  sourcefile.c产生sourcefile.gcov

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值