linux 跟踪运行的进程,使用 Linux 的 strace 命令跟踪/调试程序的常用选项
在调试的时候,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 命令跟踪/调试程序的常用选项相关推荐
- linux跟踪线程的方法:LWP和strace命令
摘要:在使用多线程程序时,有时会遇到程序功能异常的情况,而这种异常情况并不是每次都发生,很难模拟出来.这时就需要运用在程序运行时跟踪线程的手段,而linux系统的LWP和strace命令正是这种技术手 ...
- linux strace命令--跟踪系统调用
简介 strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核 ...
- linux 的ss看进程号,linux ss命令详解
ss 是 Socket Statistics 的缩写.ss 命令可以用来获取 socket 统计信息,它显示的内容和 netstat 类似.但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连 ...
- 在linux怎样运行java,怎么在linux运行java
怎么在linux运行java [2021-02-01 00:44:14] 简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(" ...
- linux选择运行的核数量,linux – 如何根据可用内核的数量选择最大负载阈值?
负载在Linux上经常被误解. 在Linux上,它是运行或不间断睡眠状态中所有任务的度量. 请注意,这是任务,而不是进程.线程包含在此值中. 内核每五秒计算一次加载,并且是一个加权平均值.这是微小负载 ...
- linux系统运行pbs出现ntf,Linux系统启动故障修复
Linux在启动过程中会出现一些故障,导致系统无法正常启动,本文列举了几个应用单用户模式.GRUB命令操作.Linux救援模式的典型故障修复案例. 一.单用户模式 Linux提供了单用户模式(类似Wi ...
- linux练习 串口跟进程6,linux下串口测试程序
linux下串口测试程序 通过简单的参数配置,执行文件+串口号+波特率 #include stdio.h #include stdlib.h #include unistd.h #include sy ...
- linux 让暂停的进程恢复,Linux 下进程的挂起和恢复命令
本文给大家介绍进程的挂起及恢复命令,具体内容如下所示: #ctrl+z:挂起,程序放到后台,程序没有结束. #jobs:查看被挂起的程序工作号 恢复进程执行时,有两种选择:fg命令将挂起的作业放回到前 ...
- Linux内核态之间进程通信,Linux 系统内核空间与用户空间通信的实现与分析[转载]...
[https://www.ibm.com/developerworks/cn/linux/l-netlink/index.html] 多数的 Linux 内核态程序都需要和用户空间的进程交换数据,但 ...
最新文章
- AU3学习案例----------考勤机手工补卡
- 查看服务器CPU配置信息,转帖-CentOS查看CPU信息、位数、多核信息;查看服务器硬件信息...
- Windows切换网段脚本
- 图书管理员【2017年普及组第二题】
- java颜色识别_java读取图片对应坐标的颜色值
- Ext的组件模型印象
- 盛大“传奇”的网游启示录
- java close 方法,close()方法的用法(Java初学者)
- 显示器信号时有时无并无html,电脑开机显示器无信号、键盘鼠标不亮解决方法...
- 四均线交易系统(Four Set of MA Crossover System)
- vue源码解析:vue生命周期方法$destory方法的实现原理
- 嵌入式系统开发笔记81:嵌入式系统的本质
- 5G NR UE 状态转换
- 程序人生丨程序员必会的 10 种核心技能,全掌握你就是行业高手
- 89.77%准确率!谷歌大脑提出CoAtNet:结合卷积和注意力
- html输入表单jsp返回数据中文乱码,JSP/Servlet页面中文显示为乱码的解决方式
- html短信验证代码是什么意思,如何让验证码显示出来 在手机找到短信选项并进入...
- 专家称北京上海未来十余年房价已被透支
- C# 进程管理 Process的常用属性与方法
- 解决 git clone fatal: unable to access ‘https://github.com...‘: 的一种方法
热门文章
- matlab 多项式提取,matlab提取多项式系数
- 用C语言解决狼羊白菜过河的思路,基于visual Studio2013解决C语言竞赛题之1079狼羊过河...
- mysql C where语句_MYSQL WHERE语句优化
- dataframe 上下拼接_pandas DataFrame 的横向纵向拼接组合
- 银行家算法课程设计(附源代码)
- 阿里云盘内测_阿里云盘内测邀请码发放!30MB/s的下载速度
- java runtime 清屏_【图片】请问java编写中如何做到清屏啊。。。_java吧_百度贴吧...
- java websocket_教你用纯Java实现一个网页版的Xshell(附源码)
- 收集 一些Oracle账号
- linux中如何解决文件已删除但空间不释放的案例