【linux经典工具】strace-就十分钟你也能成为性能调优专家

news2024/12/26 21:09:10

strace 是什么

strace是一款功能强大的 Linux 进程监控和诊断工具。主要作用就是:用于调试程序、解决问题、拦截和记录系统调用以及跟踪正在运行的进程。它能输出了程序如何与系统交互的过程,尤其是在无法获取源代码的情况下(那些开源工具、系统命令的调试就显得尤为重要了)。

它还可以作为调试工具,帮助解决问题。它主要用于以下目的:

1)调试程序
2)故障、排除程序
3)拦截进程的系统调用
4)记录进程的系统调用
5)进程接收到的信号
6)跟踪正在运行的进程

如果没有源代码,可以使用 strace 来分析程序如何与系统交互,以调试程序的执行。strace工具会将每个系统调用的名称及其括在括号中的参数及其返回值返回到标准错误。

安装“strace”进程监控工具

这个需要区分不同的Linux 发行版使用指定的命令去安装。

  1. 对于 Debian/Ubuntu
    $sudo apt 安装 strace

  2. 如果是 CentOS/RedHat
    $yum 安装 strace

使用 Strace 进程监控工具

1.获取系统调用、参数以及调用结果。

我们以 ls 命令的调试为例子:
$strace ls

注意:这里“ls”是要跟踪其系统调用的命令。

能看到详细的调用栈过程如下图
在这里插入图片描述
在这里插入图片描述

可以看出,它显示了系统调用、参数(在括号中)以及 ls 命令的调用结果。最后一行的+++ exited with 0 +++表示退出状态为 0,这意味着没有错误。如果发生错误,退出代码为-1。

2.统计系统调用的次数。

$strace-c ls

注意:这里“ls”是要跟踪其系统调用的命令。

计算系统调用次数
在这里插入图片描述

可以看出,它显示了每个系统调用的次数并打印总数,甚至显示每次调用的次数和所花费的时间(是不是够牛逼,看到这里有没有感觉自己跟linux 大神的差距好像也没那么大了,😄)。

3.跟踪特定或具体的系统调用。

$strace -e trace=write ls

注意:这里的“ls”是要跟踪的系统调用的命令。要跟踪的系统调用的名称是write, 上面的命令的含义是统计 ls 里面 write函数的调用。

跟踪特定或具体的系统调用

在这里插入图片描述

可以看出,它仅显示 write 系统调用的名称、参数和结果。

4.跟踪网络相关的系统调用

$strace -e trace=network nc -v -n 127.0.0.1 801

注意:这里的“ nc -v -n 127.0.0.1 801”是需要跟踪的系统调用的命令,需要跟踪的系统调用的名称是网络。
在这里插入图片描述

可以看出,它仅显示网络系统调用的名称、参数和结果。

5.跟踪与信号相关的系统调用

$strace -e trace=signal nc -v -n 127.0.0.1 801

注意:这里的“ nc -v -n 127.0.0.1 801”是需要跟踪的系统调用的命令,需要跟踪的系统调用的名称是signal。

在这里插入图片描述

可以看出,它只显示信号系统调用的名称、参数和结果。

6.打印每次调用的时间戳。

$strace -r ls

注意:这里“ls”是要跟踪其系统调用的命令。

在这里插入图片描述
在这里插入图片描述

可以看出,它在进入每个系统调用时显示一个相对时间戳。它记录了连续系统调用开始之间的时间差,有了它你必须能知道性能卡点在哪。

7.打印系统调用所花费的时间。

$strace -T ls

注意:这里“ls”是要跟踪其系统调用的命令。

在这里插入图片描述
在这里插入图片描述

可以看出,每次调用所花费的时间都打印在每行的末尾。

8.打印每个系统调用的挂钟时间。

$strace -t ls

注意:这里“ls”是要跟踪其系统调用的命令。

在这里插入图片描述
在这里插入图片描述

可以看出,每行的前缀好像是系统调用本身的挂钟时间。

9.打印指令指针。

$strace -i ls

注意:这里“ls”是要跟踪其系统调用的命令。

在这里插入图片描述
在这里插入图片描述

可以看出,指令指针打印在每一行输出中。

10.将输出打印到文件

$strace -o 输出.txt ls

注意:这里的“ls”是要跟踪其系统调用的命令。output.txt 是要存储输出的文件的名称。
在这里插入图片描述
在这里插入图片描述

可以看出,命令的输出存储在“ output.txt”文件中。

结论

strace 是一种用于调试和监控系统交互的多功能工具,可提供有助于排除故障和提高系统性能的详细见解。

通过我们的在线 Linux 课程和认证释放 Linux 的强大功能!无论是初学者还是经验丰富的专业人士,看完我们的linux工具系列,都可以成功驾驭它。

准备好成为 Linux 专家了吗? 如果看完有收获,感谢您的关注,点赞以及评论。

期待您的反馈,我们将再接再励。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2160505.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习threejs,绘制任意字体模型

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言二、🍀绘制任意字体模型…

前端开发之装饰器模式

介绍 装饰器模式 是在不修改对象内部结构的情况下,动态地给对象添加功能的一种设计模式。在软件开发中,有时候我们需要为已有对象添加一些额外的行为,但不希望修改该对象的代码,装饰器模式可以很好的满足这一需求。 在TypeScrip…

面向AI的数据治理市场前景如何?

面向AI的数据治理市场前景如何? 前言面向AI的数据治理 前言 在这个数字化飞速发展的时代,数据已经成为了我们生活和工作中不可或缺的一部分。就像一把双刃剑,既能为我们带来巨大的机遇,也可能带来一些挑战。而数据治理&#xff0…

[spring]springboot日志

文章目录 一. 日志的用途二. 打印日志三. 日志框架门面模式(外观模式)SLF4J框架介绍 四. 日志格式日志级别配置日志级别日志持久化配置日志文件分割配置日志格式 五. 更简单的日志输出 一. 日志的用途 二. 打印日志 得到日志对象: 需要使用日志工厂LoggerFactory RestControl…

统信服务器操作系统【qcow2 镜像空间扩容】方案

使用 qcow2 镜像安装系统,当默认安装系统存储空间不够用时,进行自定义扩容 文章目录 准备环境扩容步骤一、检查环境信息1.查看镜像信息2.查看镜像分区信息3.确认需要扩容的分区名二、扩容1.备份镜像2.创建新的镜像文件,并指定空间3.将系统扩容到新的镜像三、扩容 lvm 分区四…

OpenCV目标检测(1)模板匹配函数matchTemplate()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 将一个模板与重叠的图像区域进行比较。 该函数在图像中滑动,使用指定的方法将大小为 w h w \times h wh的重叠块与模板 templ 进行…

安全运维教程(非常详细)从零基础入门到精通,看完这一篇就够了_网络运维手册

一、安全运维-网络 1、IP地址相关 IP地址属于网络层地址,用于标识网络中的节点设备。 IP地址由32bit构成,每8bit一组,共占用4个字节。 IP地址由两部分组成,网络位和主机位。 IP地址分类: 类别网络位子网掩码私有地…

基于单片机的智能校园照明系统

由于校园用电量较大,本设计可以根据实际环境情况的改变,实现实时照明的控制。本设计以单片机芯片为控制芯片,热释电传感器采集教室中学生出入的信息,并把信息传递给单片机芯片,单片机芯片根据传感器传递过来的信息来控…

004_动手实现MLP(pytorch)

import torch from torch import nn from torch.nn import init import numpy as np import sys import d2lzh_pytorch as d2l # 1.数据预处理 mnist_train torchvision.datasets.FashionMNIST(root/Users/w/PycharmProjects/DeepLearning_with_LiMu/datasets/FashionMnist, t…

水印与标志检测系统源码分享

水印与标志检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…

深度解读数字化转型实施中的常见挑战与解决方案

为何深入理解数字化转型中的挑战至关重要? 数字化转型不仅仅是技术升级的过程,更是企业在面对市场变化、客户需求以及内部效率提升等多方面压力时,进行的系统性变革。然而,数字化转型并非一蹴而就,且在实际实施过程中…

app store预览和截屏最新要求6.9寸截屏,没真机的解决方案

IOS又升级了,最新的iphone 16,新出的iphone 16 pro max是6.9英寸的。 而app store的上架流程也随机更新了,不再需要之前的5.5寸屏截图,改为需要6.9寸屏的截图了 5.5寸那些老古董终于退出历史舞台 但是问题来了,现在…

电源设计的艺术:从底层逻辑到工程实践

在电子工程的世界里,电源设计是核心中的核心。它不仅是电子设备的能量源泉,更是整个系统稳定运行的基石。随着科技的不断进步,电源设计的要求也越来越高,从效率、稳定性到体积、成本,每一个维度都是工程师们不断追求的…

Linux相关概念和重要知识点(7)(git、冯诺依曼体系结构)

1.git (1)版本控制和版本控制器 当我们修改一个项目的时候,一般都会先留下一个备份再修改,并将修改的文件命名为第一次修改、第二次修改......当需要途中的任何版本,或是需要回退到之前的版本时,都能够找…

远程连接服务器时出现“这可能是由于CredSSP加密数据库修正”的错误提示的解决办法

现象: 当远程连接服务器时,有时候会出现以下提示,从而导致无法成功连接服务,如下所述: 原因: 远程桌面使用的是“凭据安全支持提供程序协议 (CredSSP) ”,这个协议在未修补的版本中是存在漏…

焊接缺陷检测系统源码分享

焊接缺陷检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

实现高效物联网通信:MQTT协议深入解析

MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,最初由IBM于1999年开发,目的是为了监控远程设备的传感器和嵌入式系统之间的通信。它的目标是提供一种简单、高效、可靠的消息传递机制,以满足低…

1.5 计算机网络的性能指标

参考:📕深入浅出计算机网络 目录 速率 带宽 吞吐量 时延 时延带宽积 往返时间 利用率 丢包率 速率 速率是指数据的传送速率(即每秒传送多少个比特),也称为数据率(Data Rate)或比特率&am…

【React与Vue】如何在页签中监听 LocalStorage 变化?这些方法你都试过吗?

在开发中,你是否会碰到过这样的需求:需要监听 LocalStorage 的变化。这在不同浏览器页签间是相对简单的,因为浏览器提供了内置的 storage 事件。但在同一个浏览器页签下,却没有直接的方式实现。今天,我们探讨下有几种高…

中电金信多模态鉴伪技术抵御AI造假威胁

AI换脸技术,属于深度伪造最常见方式之一,是一种利用人工智能生成逼真的虚假人脸图片或视频的技术。基于深度学习算法,可以将一个人的面部特征映射到另一个人的面部,创造出看似真实的伪造内容。近年来,以AI换脸为代表的…