linux下常用调试工具
fuser
fuser使用文件或者套节字来识别进程
示例
fuser <filename>
常用选项
-n # 指定namespace(file, tcp, udp)
-m # 指定挂载点
lsof
lsof(list open files)列出当前系统打开文件
示例
lsof
lsof -p 1234
常用选项
-p <pid> # 指定特定进程
-c <cmd> # 指定命令
-n # 不解析主机名
-P # 不解析端口号
gstack
gstack打印的堆栈信息
示例
gstack <pid>
strace
strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。
示例
strace cat /dev/null
strace -p 1234
常用选项
-p <pid> # 指定特定进程
-o <filename> # 输出到文件
-f # 踪子进程
-ff # 跟-o连用,每个进程输出到各自文件
tcpdump
tcpdump抓包
示例
tcpdump -i eth0 src 192.168.1.1 and tcp port 22
常用选项
-i <interface> # 指定网卡
-w <filename> # 输出到文件
-nn # 不进行地址解析