Linux开发调试工具

Linux开发调试工具

在Linux日常使用中,最常用的命令自然是sudo, ls, cp, mv, cat等,但作为后台开发者,上述命令远远不够。
开发及调试工具介绍了从“编辑 -> 编译 -> 分析目标文件 -> 追踪调用过程”的全套命令。


开发及调试

  • 编辑器:vim
  • 编译器:gcc/g++
  • 调试工具:gdb
  • 查看依赖库:ldd
  • 二进制文件分析:objdump
  • ELF文件格式分析:readelf
  • 跟踪进程中系统调用:strace
  • 跟踪进程栈:pstack
  • 进程内存映射:pmap

内容

开发及调试

开发工具大部分都提供了完善的功能,所以这里不一一列举用法。从技术层面来说,调试工具比开发工具更考验一个人的工程能力。

  1. 编辑器:vim

    • 功能强大的编辑器。
    • 详见
  2. 编译器:gcc/g++

    • C/C++编译器,必知必会,除此以外需要了解预处理-> 编译 -> 汇编 -> 链接等一系列流程。 详见
    gcc -E main.c  -> main.i  #预处理,生成预处理文件
    gcc -S main.i  -> main.s  #编译,生成汇编文件
    gcc -c main.s  -> main.o  #汇编,生成目标文件
    gcc -o main.o  -> a.out   #链接,生成可执行文件
    
  3. 调试工具:gdb

    • 服务端调试必备。
    • 详见
  4. 查看依赖库:ldd

    • 程序依赖库查询
    # ldd后接可执行文件
    # 第一列为程序依赖什么库,第二列为系统提供的与程序需要的库所对应的库,第三列为库加载的开始地址
    # 前两列可以判断系统提供的库和需要的库是否匹配,第三列可以知道当前库在进程地址空间中对应的开始位置
    
    ldd a.out
    
  5. 二进制文件分析:objdump

    • 反汇编,需要理解汇编语言
    • 详见
  6. ELF文件格式分析:readelf

    • 可以得到ELF文件各段内容,分析链接、符号表等需要用到
    • 详见
  7. 跟踪进程中系统调用:strace

  8. 跟踪进程栈:pstack

  9. 进程内存映射:pmap

    • 显示进程内存映射
    # -x显示扩展信息,后接进程pid
    # Address: 内存开始地址
    # 显示信息:
        Kbytes: 占用内存的字节数
        RSS: 保留内存的字节数
        Dirty: 脏页的字节数(包括共享和私有的)
        Mode: 内存的权限:read、write、execute、shared、private
        Mapping: 占用内存的文件、或[anon](分配的内存)、或[stack](堆栈)
        Device: 设备名 (major:minor)
    
    pmap -x 12345
    

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值