在调试的时候,strace能帮助你追踪到一个程序所执行的系统调用。当你想知道程序和操作系统如何交互的时候,这是极其方便的,比如你想知道执行了哪些系统调用,并且以何种顺序执行。

这个简单而又强大的工具几乎在所有的Linux操作系统上可用,并且可被用来调试大量的程序。

命令用法

让我们看看strace命令如何追踪一个程序的执行情况。

最简单的形式,strace后面可以跟任何命令。它将列出许许多多的系统调用。一开始,我们并不能理解所有的输出,但是如果你正在寻找一些特殊的东西,那么你应该能从输出中发现它。

让我们来看看简单命令ls的系统调用跟踪情况。

raghu@raghu-Linoxide~$ strace ls

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

上面的输出部分展示了write系统调用,它把当前目录的列表输出到标准输出。

下面的图片展示了使用ls命令列出的目录内容(没有使用strace)。

raghu@raghu-Linoxide~$ ls

选项1 寻找被程序读取的配置文件

Strace 的用法之一(除了调试某些问题以外)是你能找到被一个程序读取的配置文件。例如,

raghu@raghu-Linoxide~$ strace php2>&1|grep php.ini

选项2 跟踪指定的系统调用

strace命令的-e选项仅仅被用来展示特定的系统调用(例如,open,write等等)

让我们跟踪一下cat命令的‘open’系统调用。

raghu@raghu-Linoxide~$ strace-e open cat dead.letter

选项3 跟踪进程

strace不但能用在命令上,而且通过使用-p选项能用在运行的进程上。

raghu@raghu-Linoxide~$ sudo strace-p1846

选项4 strace的统计概要

它包括系统调用的概要,执行时间,错误等等。使用-c选项能够以一种整洁的方式展示:

raghu@raghu-Linoxide~$ strace-c ls

linux 跟踪运行的进程,使用 Linux 的 strace 命令跟踪/调试程序的常用选项相关推荐

  1. linux跟踪线程的方法:LWP和strace命令

    摘要:在使用多线程程序时,有时会遇到程序功能异常的情况,而这种异常情况并不是每次都发生,很难模拟出来.这时就需要运用在程序运行时跟踪线程的手段,而linux系统的LWP和strace命令正是这种技术手 ...

  2. linux strace命令--跟踪系统调用

    简介 strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核 ...

  3. linux 的ss看进程号,linux ss命令详解

    ss 是 Socket Statistics 的缩写.ss 命令可以用来获取 socket 统计信息,它显示的内容和 netstat 类似.但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连 ...

  4. 在linux怎样运行java,怎么在linux运行java

    怎么在linux运行java [2021-02-01 00:44:14]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(" ...

  5. linux选择运行的核数量,linux – 如何根据可用内核的数量选择最大负载阈值?

    负载在Linux上经常被误解. 在Linux上,它是运行或不间断睡眠状态中所有任务的度量. 请注意,这是任务,而不是进程.线程包含在此值中. 内核每五秒计算一次加载,并且是一个加权平均值.这是微小负载 ...

  6. linux系统运行pbs出现ntf,Linux系统启动故障修复

    Linux在启动过程中会出现一些故障,导致系统无法正常启动,本文列举了几个应用单用户模式.GRUB命令操作.Linux救援模式的典型故障修复案例. 一.单用户模式 Linux提供了单用户模式(类似Wi ...

  7. linux练习 串口跟进程6,linux下串口测试程序

    linux下串口测试程序 通过简单的参数配置,执行文件+串口号+波特率 #include stdio.h #include stdlib.h #include unistd.h #include sy ...

  8. linux 让暂停的进程恢复,Linux 下进程的挂起和恢复命令

    本文给大家介绍进程的挂起及恢复命令,具体内容如下所示: #ctrl+z:挂起,程序放到后台,程序没有结束. #jobs:查看被挂起的程序工作号 恢复进程执行时,有两种选择:fg命令将挂起的作业放回到前 ...

  9. Linux内核态之间进程通信,Linux 系统内核空间与用户空间通信的实现与分析[转载]...

    [https://www.ibm.com/developerworks/cn/linux/l-netlink/index.html] 多数的 Linux 内核态程序都需要和用户空间的进程交换数据,但 ...

最新文章

  1. AU3学习案例----------考勤机手工补卡
  2. 查看服务器CPU配置信息,转帖-CentOS查看CPU信息、位数、多核信息;查看服务器硬件信息...
  3. Windows切换网段脚本
  4. 图书管理员【2017年普及组第二题】
  5. java颜色识别_java读取图片对应坐标的颜色值
  6. Ext的组件模型印象
  7. 盛大“传奇”的网游启示录
  8. java close 方法,close()方法的用法(Java初学者)
  9. 显示器信号时有时无并无html,电脑开机显示器无信号、键盘鼠标不亮解决方法...
  10. 四均线交易系统(Four Set of MA Crossover System)
  11. vue源码解析:vue生命周期方法$destory方法的实现原理
  12. 嵌入式系统开发笔记81:嵌入式系统的本质
  13. 5G NR UE 状态转换
  14. 程序人生丨程序员必会的 10 种核心技能,全掌握你就是行业高手
  15. 89.77%准确率!谷歌大脑提出CoAtNet:结合卷积和注意力
  16. html输入表单jsp返回数据中文乱码,JSP/Servlet页面中文显示为乱码的解决方式
  17. html短信验证代码是什么意思,如何让验证码显示出来 在手机找到短信选项并进入...
  18. 专家称北京上海未来十余年房价已被透支
  19. C# 进程管理 Process的常用属性与方法
  20. 解决 git clone fatal: unable to access ‘https://github.com...‘: 的一种方法

热门文章

  1. matlab 多项式提取,matlab提取多项式系数
  2. 用C语言解决狼羊白菜过河的思路,基于visual Studio2013解决C语言竞赛题之1079狼羊过河...
  3. mysql C where语句_MYSQL WHERE语句优化
  4. dataframe 上下拼接_pandas DataFrame 的横向纵向拼接组合
  5. 银行家算法课程设计(附源代码)
  6. 阿里云盘内测_阿里云盘内测邀请码发放!30MB/s的下载速度
  7. java runtime 清屏_【图片】请问java编写中如何做到清屏啊。。。_java吧_百度贴吧...
  8. java websocket_教你用纯Java实现一个网页版的Xshell(附源码)
  9. 收集 一些Oracle账号
  10. linux中如何解决文件已删除但空间不释放的案例