简介
strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。
使用技巧
-t 显示时间
-tt 显示微妙级别时间
-o file 将输出保存到文件
-T 显示系统调用耗费时间
技巧: 加上2>&1后可跟后续如more等操作,不加是不可以的
|
|
在Mac OS下对应的是命令是dtruss
对于strace中的系统调用,比如文件、socket等的,都会有文件描述符,通常这时候会配合使用lsof -p 来查询文件描述符对应的具体值是什么
参考
[使用 Linux 的 strace 命令跟踪/调试程序的常用选项][4]
example
example2
linux系统调用列表
restart_syscall