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             # 不进行地址解析