Categories: Shell编程

10个用于对Linux进程进行故障排除和调试的Strace命令

strace是一个功能强大的命令行工具,用于在类似Unix的操作系统(例如Linux)中调试和排除故障。它捕获并记录一个进程进行的所有系统调用以及该进程接收的信号。

它显示每个系统调用的名称以及括在圆括号中的参数以及其标准错误的返回值。您也可以选择将其重定向到文件。在本文中,我们将解释10个strace命令示例,用于对Linux系统中的程序和进程进行故障排除和调试。

如何安装

$ sudo apt install strace   #Debian/Ubuntu 
# yum install strace        #RHEL/CentOS
# dnf install strace        #Fedora 22+

跟踪Linux命令系统调用

$ strace df -h

跟踪Linux进程PID

如果某个进程已经在运行,则可以通过简单地传递其PID来跟踪它,如下所示:这将在屏幕上显示继续输出,以显示该进程正在进行的系统调用,要结束该进程,请按[Ctrl + C]

$ sudo strace -p 3569

获取Linux进程摘要

使用-c标志,可以生成每个系统调用的总时间,调用和错误的报告,如下所示。

$ sudo strace -c -p 3569

系统调用期间打印指令指针

-i选项在程序进行每个系统调用时显示指令指针。

$ sudo strace -i df -h

显示每个跟踪输出时间

$ sudo strace -t df -h

在系统调用中打印命令花费的时间

要显示程序在每个系统调用的开始和结束之间的时间差,请使用-T选项。

$ sudo strace -T df -h

仅跟踪特定的系统调用

在下面的命令中,trace = write被称为限定表达式,其中trace是限定符(其他包括signal,abbrev,verbose,raw,read或write)。在这里,write是限定符的值。

$ sudo strace -e trace=write df -h

根据特定条件跟踪系统调用

让我们看一下如何跟踪与给定事件类别有关的系统调用。此命令可用于跟踪涉及过程管理的所有系统调用。

$ sudo strace -q -e trace=process df -h 

将跟踪输出重定向到文件

要将发送到标准错误的跟踪消息写入文件,请使用-o选项。这意味着仅命令输出将打印在屏幕上,如下所示。

$ sudo strace -o df_debug.txt df -h

显示Strace的一些调试输出

要显示strace工具的调试信息,请使用-d标志。

$ strace -d df -h

有关更多信息,请参见strace手册页。

$ man strace
5.0
02
mysqlshow快速获取有关MySQL数据库,表,列和索引信息
Jekyll外链设置nofollow
嘻嘻

嘻嘻IT: 笔者是一个工作七八年的程序猿老鸟,从事涉及的技术栈主要包括PHP、Linux、Devops等,喜欢研究新技术,尝试新技术,提升技术自动化和开发效率,致力于write less,do more! 技术每年都会层出不穷,领域划分的越来越细,不可能学习所有的东西,保持对技术的好奇心,理解技术中核心思想,做一个有深度,有思想的开发!

Share
Published by
嘻嘻
Tags: shell工具

Recent Posts

全球货币导航网页上线了!

o在全球化的今天,货币兑换和国…

4小时 ago

bash字符串拼接

在编程中,字符串的拼接是一个非…

4小时 ago

Bash Case详解

Bash case 语句通常用…

4小时 ago

Bash for详解

for循环是编程语言中的基础概…

5小时 ago

liunux中你必须知道alias命令?

在Linux操作系统中,无论你…

1天 ago

zshrc文件详解

Zsh 是一个强大的 shel…

2天 ago