使用 Linux 的 strace 命令跟踪/调试程序的常用选项
在调试的时候,strace能帮助你追踪到一个程序所执行的系统调用。当你想知道程序和操作系统如何交互的时候,这是极其方便的,比如你想知道执行了哪些系统调用,并且以何种顺序执行。
这个简单而又强大的工具几乎在所有的Linux操作系统上可用,并且可被用来调试大量的程序。

命令用法
让我们看看strace命令如何追踪一个程序的执行情况。
最简单的形式,strace后面可以跟任何命令。它将列出许许多多的系统调用。一开始,我们并不能理解所有的输出,但是如果你正在寻找一些特殊的东西,那么你应该能从输出中发现它。
让我们来看看简单命令ls的系统调用跟踪情况。
- raghu@raghu-Linoxide ~ $ strace ls

Stracing ls command
这是strace命令输出的前几行。其他输出被截去了。

Strace write system call (ls)
上面的输出部分展示了write系统调用,它把当前目录的列表输出到标准输出。
下面的图片展示了使用ls命令列出的目录内容(没有使用strace)。
- raghu@raghu-Linoxide ~ $ ls

ls command output
选项1 寻找被程序读取的配置文件
Strace 的用法之一(除了调试某些问题以外)是你能找到被一个程序读取的配置文件。例如,
- raghu@raghu-Linoxide ~ $ strace php 2>&1 | grep php.ini

Strace config file read by program
选项2 跟踪指定的系统调用
strace命令的-e选项仅仅被用来展示特定的系统调用(例如,open,write等等)
让我们跟踪一下cat命令的‘open’系统调用。
- raghu@raghu-Linoxide ~ $ strace -e open cat dead.letter

Stracing specific system call (open here)
选项3 跟踪进程
strace不但能用在命令上,而且通过使用-p选项能用在运行的进程上。
- raghu@raghu-Linoxide ~ $ sudo strace -p 1846

Strace a process
选项4 strace的统计概要
它包括系统调用的概要,执行时间,错误等等。使用-c选项能够以一种整洁的方式展示:
- raghu@raghu-Linoxide ~ $ strace -c ls

Strace summary display
选项5 保存输出结果
通过使用-o选项可以把strace命令的输出结果保存到一个文件中。
- raghu@raghu-Linoxide ~ $ sudo strace -o process_strace -p 3229

Strace a process
之所以以sudo来运行上面的命令,是为了防止用户ID与所查看进程的所有者ID不匹配的情况。
选项6 显示时间戳
使用-t选项,可以在每行的输出之前添加时间戳。
- raghu@raghu-Linoxide ~ $ strace -t ls

Timestamp before each output line
选项7 更精细的时间戳
-tt选项可以展示微秒级别的时间戳。
- raghu@raghu-Linoxide ~ $ strace -tt ls

Time - Microseconds
-ttt也可以向上面那样展示微秒级的时间戳,但是它并不是打印当前时间,而是显示自从epoch(译注:1970年1月1日00:00:00 UTC)以来的所经过的秒数。
- raghu@raghu-Linoxide ~ $ strace -ttt ls

Seconds since epoch
选项8 相对时间
-r选项展示系统调用之间的相对时间戳。
- raghu@raghu-Linoxide ~ $ strace -r ls

Relative Timestamp
via: http://linoxide.com/linux-command/linux-strace-command-examples/
使用 Linux 的 strace 命令跟踪/调试程序的常用选项的更多相关文章
- linux下strace命令详解
简介 strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核 ...
- linux的strace命令用法
strace命令用法 调用:strace [ -dffhiqrtttTvxx ] [ -acolumn ] [ -eexpr ] …[ -ofile ] [ -ppid ] … [ -sstrsize ...
- 使用strace命令跟踪系统调用
一.是什么strace? strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由 ...
- LINUX的STRACE命令用法 [转]
调用:strace [ -dffhiqrtttTvxx ] [ -acolumn ] [ -eexpr ] ...[ -ofile ] [ -ppid ] ... [ -sstrsize ] [ -u ...
- strace命令跟踪进程
在实际系统维护过程中,常常需要知道一个进程在做哪些动作,比如想判断一个进程是否hang,我们可以使用strace命令,此命令式用来跟踪一个进程在调用哪些系统函数和信号 通过跟踪xinetd进程演示st ...
- Linux性能测试 strace命令
1 功能说明 strace 命令是一种强大的工具 , 能够显示任何由用户空间程式发出的系统调用 . strace 显示这些调用的参数并返回符号形式的值 . strace 从内核接收信息 , ...
- linux介绍、命令(基本命令、常用命令、使用方法、基本格式)
操作系统(科普章节) 目标 了解操作系统及作用 1. 操作系统(Operation System,OS) 一个例子说明操作系统 操作系统作为接口的示意图 没有安装操作系统的计算机,通常被称为 裸机 如 ...
- Linux centos7 rsync工具介绍、rsync常用选项、rsync通过ssh同步
一.rsync工具介绍 rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync.rsync是Linux系统下的文件同步和数据传输工具,它采用“rsync ...
- Linux 的 strace 命令
https://linux.cn/article-3935-1.html http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316692.htm ...
随机推荐
- Ubuntu Intel显卡驱动安装 (Ubuntu 14.04--Ubuntu 16.10 + Intel® Graphics Update Tool)
最近使用在使用Ubuntu时,发现大部分情况下,不安装显卡驱动,使用默认驱动,都是没有问题的,但对于一些比较奇特配置的电脑,如下所示,如果使用默认驱动,会时常莫名其妙死机crash,尤其是在使用Ope ...
- Dynamics CRM 视图显示列的拷贝—view layout replicator
在视图设置的时候很多人会遇到这样的问题,要设置多张视图,而这多张视图可能除了筛选条件不同外其他的均相同,手动去设置是件重复的令人非常头痛的事情,如果能够拷贝那就相当完美了. 本篇即介绍视图显示列的拷贝 ...
- UNIX环境高级编程——初始化一个守护进程
#include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h&g ...
- 【JavaEE WEB 开发】Tomcat 详解 Servlet 入门
转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/47146817 一. Tomcat 下载安装配置 1. Tomcat 下载 T ...
- 与MP3相关的技术总结
MP3文件格式解析 Peter Lee 2008-06-05 目录 33 B7 00 0001 02 FF FF FF F4 E1 2F FF FF FFFF DF FF FF FB52 8C 12 ...
- ubuntu连接android设备(附最简单方法)
在ubuntu下连接android设备,虽然不用像windows那样安装驱动,然而却会遇见一个错误:输入adb shell,会提示insufficient permissions for device ...
- 05 Activity 回传数据
当从一个Activity跳转到第二个Activity后然 让其处理完业务逻辑回传数据给第一个Activity: 回传调用方法顺序: onActivityResult--->>onResta ...
- 2、Android构建本地单元测试
如果你的单元测试在Android中没有依赖或者只有简单的以来,你可以在你的本地开发环境中运行你的测试.这种测试比较高效因为它能让你避免将整个app安装到物理设备或虚拟机中执行单元测试.最后,执行单元测 ...
- 修改GDAL库支持IRSP6数据
使用GDAL库发现不能打开IRSP6的数据,不过看GDAL提供的文件格式里面却是支持IRSP6的数据的,具体可以参考网页http://www.gdal.org/frmt_fast.html.下面图1是 ...
- 01_Linux系统系统语言查询,设置Xshell工具,中文显示,测试Xshell中文字符显示,Linux中文显示乱码设置
Xshell是一个强大的安全终端模拟软件,它支持SSH1,SSH2,以及Microsoft Windows平台的TELNETNetSarang Xshell 4 Build 0 ...