Linux 调试三剑客——strace,lsof,tcpdump

本文介绍了Linux调试中的三个重要工具:strace用于跟踪系统调用和信号,lsof展示进程打开的文件,tcpdump则是一个强大的网络包分析工具。通过strace可以诊断程序异常退出、运行缓慢或阻塞等问题,lsof能查看进程文件操作,tcpdump则用于抓取并分析网络包,支持各种协议和过滤选项。
摘要由CSDN通过智能技术生成

欢迎分享,微博 老和山小范 ,博客 wsfdl.com

Brendan D. Gregg 专注 Linux performance & tuning 许多年,其博客 brendangregg.com 里关于分析和调优的干货琳琅满目。一篇名为 Linux Performance 文章全面而详细的整理了常用工具,覆盖了硬件、存储、网络乃至应用,如下图:

Linux performance

能掌握上图的十八般武艺固然最好,从定位分析的角度来说,我认为三个高级而常用的命令是 strace, lsof 和 tcpdump。


strace

strace - trace system calls and signals

据说,对一个经验丰富的 Linux C/C++ 工程师,他通过 strace 即可分析多数软件的大致实现方式。Linux 进程空间可分为用户空间和内核空间,程序通常运行在用户态,它需要通过 系统调用 访问内核空间。系统调用的重要性不言而喻,凡是涉及到进程、文件管理、设备管理和通信等的操作都必须依赖系统调用完成,如下:

  • Process Control: load/execute/end/abort/create/terminate process, get/set process attributes, wait for time/event/signal, allocate/free memory
  • File management: create/delete/open/read/write/reposition file, get/set file attributes
  • Device Management: request/release/attach/detach device,read/write/reposition, get/set device attributes
  • Communication: create/delete connection, send/receive messages, transfer status information

strace 追踪进程产生的所有系统调用,包括参数、返回值和执行消耗的时间,很多是涉及到内核和资源层面的操作都需要系统调用完成,所以 strace 在诊断以下场景非常有效:

  • 程序意外退出
  • 程序运行缓慢
  • 进程阻塞

strace 的通常使用方式如下:

strace -f -F -T -tt -o output.txt straced_cmd

-f  跟踪 fork 产生的子进程
-F  跟踪 vfork 产生的子进程
-tt 在输出中的每一行前加上时间信息,微秒级
-T  显示每一个调用所耗的时间
-o  输出到指定文件 output.txt

例如:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值