truss 命令

2023-11-15

truss 命令
用途
跟踪进程的系统调用、动态装入的用户级函数调用、接收的信号和造成的机器故障。
语法
truss [ -f] [ -c] [ -a] [ -l ] [ -d ] [ -D ] [ -e] [ -i] [ { -t | -x} [!] Syscall [...] ] [ -s [!] Signal [...] ] [ { -m }[!] Fault [...]] [ { -r | -w} [!] FileDescriptor [...] ] [ { -u } [!]LibraryName [...]:: [!]FunctionName [ ... ] ] [ -o Outfile] {Command| -p pid [. . . .]}
描述
truss 命令执行指定命令或附加在列出进程标识上,并产生对系统调用、接收的信号和进程造成的机器故障的跟踪。每行跟踪输出报告 Fault 或 Signal 名称或 Syscall 名称和参数及返回值。系统库定义的子例程对于内核的严格系统调用并不是必要的。truss 命令不报告这些子例程,而是报告子例程的基本系统调用。可能的话,系统调用参数使用有关系统头文件定义符号显示。对于路径名指针参数,truss 显示指向的字符串。未定义的系统调用缺省显示系统名称、所有八个可能的变量及十六进制格式的返回值。
当 -o 标志与 truss 一起使用,或标准错误改指向非终端文件时,truss 忽略挂断、中断和信号进程。它促进跟踪交互式程序从终端获得 interrupt 和 quit 信号。
若跟踪输出保持指向终端或跟踪现存过程(使用 -p 标志),truss 对 hangup、interrupt 和 quit 信号做出反应,释放所有跟踪进程并退出。它使用户可终止过多的跟踪输出并释放前现存进程。释放进程继续到功能恢复正常。
对与含有一列变量的选项,名称 all 可用作指定列表中所有可能成员的简写。以 ! 开头的列表,选项含义是相反的(示例:排除而非跟踪)。同一选项可能指定为多种表现形式。同一列表的相同名称,后面的选项(右边选项)覆盖前面的选项(左边选项)。
除了页面故障以外的所有机器故障均导致公布信号到发生故障进程。除了进程阻塞信号,每一机器故障报告后立即给出接收的信号报告。
为避免与其它控制进程冲突,truss 不跟踪由其检测到并由带有 /proc 接口的另一进程控制的进程。
多进程跟踪输出不是按严格的时间顺序产生。示例:管道读取可以在相应的写之前报告。然而每一进程输出是严格按时间排序。跟踪输出含有制表符,且每八个位置设置标准制表符停止位。
系统跟踪子进程时可运行于每个用户进程槽之外。这是因为跟踪多个进程时,truss 作为所跟踪进程的控制进程运行,将用于所给进程的进程槽数目加倍。运行多进程跟踪之前应考虑通常系统强制的每个用户 25 进程的限制。
处理多个进程时,truss 使用共享内存和信号。例如:在多进程标识下使用 -f 标志和 -p 标志。需要的话,跟踪可运行于非配置系统中。这些情况下,truss 生成警告消息并继续跟踪。然而跟踪输出可能断章取义,-c 标志输出仅报告顶级命令或第一个进程标识,不计数子进程。
操作系统为进程跟踪强加某种安全性限制。必须有跟踪命令的存取特权。 set-uid 和 set-gid 进程仅可由特权用户跟踪。除由特权用户运行外,truss 命令无法控制执行 set-id 或不可读对象代码的进程。这些未跟踪的进程从执行点保持正常并与 truss 无关。
truss 输出提到的轻量级进程(LWP)是真正的内核线程。选项 -l 在每行跟踪输出显示 LWP 标识(即线程标识)。
AIX 库的用户库函数有静态和动态两种装入函数调用。选项 -u 跟踪仅用于动态装入函数调用。
-u 选项提供动态装入函数调用的用户级函数调用跟踪。此选项产生函数调用的进入/退出跟踪。
标志
-a 显示在每一执行系统调用中传递的参数字符串。
-c 计数跟踪系统调用、故障和信号而不是逐行显示跟踪结果。跟踪命令终止或 truss 中断时生成摘要报告。若还使用 -f 标志,计数包含所有跟踪的系统调用、故障和子进程信号。
-d 每行输出包含时间戳记。时间从跟踪开始以每秒显示。跟踪输出的第一行显示测量单个时间戳记的基本时间。缺省不显示时间戳记。
-D 每行输出显示增量时间。增量时间表示从由该线程引起的最后报告事件起计时引起事件的 LWP 的逝去时间。缺省不显示增量时间。
-e 显示在每一执行系统调用中传递的环境字符串。
-f 跟在 fork 系统调用产生的所有子进程之后,并包含跟踪输出中的信号、故障和系统调用。 通常,仅跟踪第一级命令和进程。如果指定 -f 标志,进程标识与每行跟踪输出一起显示哪个进程执行系统调用或接收信号。
-i 阻止显示可中断的休眠系统调用。某些终端设备或管道的系统调用,如 open 和 kread,可无限期休眠且是可中断的。通常,如果这种休眠系统调用保持超过一秒休眠,truss 将报告。系统调用完成后一秒内报告系统调用。-i 标志使这种系统调用完成后仅报告一次。
-l 显示有关 LWP 进程的标识(线程标识)及 truss 输出。输出中缺省不显示 LWP 标识。
-m [!]Fault 跟踪进程中的机器故障。必须用逗号分隔要跟踪的机器故障。可按名称或代码指定故障(参见 sys/procfs.h 头文件)。如果列表以符号“!”开始,指定的故障不再被跟踪且不显示跟踪输出。缺省值是 -mall -m!fltpage。
-o Outfile 指定用于跟踪输出的文件。缺省时输出指向标准错误。
-p 将参数作为一列现存进程的进程标识而不是要执行的命令解释到 truss。 倘若进程用户标识或组标识与用户的用户标识或组标识匹配或者用户是特权用户,truss 控制并开始跟踪每个进程。
-r [!] FileDescriptor 显示每一个读取指定文件描述符的 I/O 缓冲区全内容。输出采用每行 32 字节的格式并以 ASCII 字符(跟在空格后)形式显示字节,或以控制字符的双字符 C 语言转义序列形式显示字节,如水平制表符 (/t) 或换行符 (/n)。如果不能解释成 ASCII 格式,字节以双字符十六进制形式显示。即使没有 -r 标志,仍显示跟踪读取 I/O 缓冲区的前 16 位字节。缺省值是 -r!all。
-s [!] Signal 允许列出要跟踪或除去的 Signals。跟踪列表中指定的信号(由逗号分隔)。信号被忽略但不是被进程阻塞时,跟踪输出仍报告每个指定信号的接收。直到进程释放时才可接收阻塞信号。可按名称或代码指定信号(参见 sys/signal.h)。如果该列表以“!”符号开头,则列出的信号将从显示跟踪输出中排除。缺省值是 -s all。
-t [!] Syscall 包含或排除来自跟踪进程的系统调用。要跟踪的系统调用必须在列表中指定并以逗号分隔。如果列表以符号“!”开始,指定的系统调用将被从跟踪输出中排除。缺省值是 -tall。
-u [!] [LibraryName [...]::[!]FunctionName [...] ]
跟踪来自用户库动态装入的用户级函数调用。 LibraryName 是逗号分隔的库名列表。FunctionName 是逗号分隔的函数名列表。两种情况下的名称都包含名称匹配元字符 *、? 和 [],这些字符与由 shell 解释的意义相同,但适用于库/函数名称空间而非文件。
任一列表中以 ! 开头的列指定不跟踪库或函数的排除名称列表。除去库将除去该库中所用函数。忽略库除去列表后的任何函数列表。可指定多个 -u 选项并将它们从左到右排列。缺省不跟踪库/函数调用。
-w [!] FileDescriptor 显示列出文件描述符每个写过程的 I/O 缓冲区内容(参见 -r)。缺省值是 -w!all。
-x [!] Syscall 以原始格式显示跟踪系统调用指定参数的数据,通常按十六进制而不是符号化方式。缺省值是 -x!all.
示例
1. 在终端上跟踪 find 命令,输入:
truss find . -print >find.out
2. 跟踪 lseek、close、statx 和开放系统调用,输入:
truss -t lseek,close,statx,open find . -print > find.out
3. 显示 find 命令的线程标识和常规输出,输入:
truss -l find . -print >find.out
4. 显示 find 命令的时间戳记和常规输出,输入:
truss -d find . -print >find.out
5. 显示 find 命令的增量时间和常规输出,输入:
truss -D find . -print >find.out
6. 运行 ls 命令时,在 libc.a 库中跟踪 malloc() 函数调用及除去 strlen() 函数调用,输入:
truss -u libc.a::malloc,!strlen ls
7. 运行 ls 命令时,跟踪 libc.a 库中名称以“m”开头的所有函数调用,输入:
truss -u libc.a::m*,!strlen ls
8. 运行可执行 foo 时,跟踪来自 libcurses.a 库的所有函数调用及除去来自 libc.a 的调用,输入:
truss -u libcurses.a,!libc.a::* foo
9. 运行可执行 foo 时,跟踪来自 libcurses.a 的 refresh() 函数调用和来自 libc.a 的 malloc() 函数调用,输入:
truss -u libc.a::malloc -u libcurses.a::refresh foo


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/22179/showart_149573.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

truss 命令 的相关文章

  • Java jar-Archive 工具 - 设置包含内容的文件夹的路径

    当我使用这个命令时 echo C Program Files Java jdk1 7 0 07 bin jar cf C file file jar C data 在 jar Archive 工具的 CMD 中 它会创建名为 file ja
  • 如何将命令行参数传递给 unix/linux 系统上正在运行的进程?

    在SunOS上有pargs命令打印传递给正在运行的进程的命令行参数 其他Unix环境下有类似的命令吗 有几种选择 ps fp
  • 使用 C# 向 USB 连接的 GPRS 调制解调器发送 AT 命令

    任何人都可以给我一个关于如何访问连接到 USB 端口的 GPRS 调制解调器的良好指示或指南 我应该为我的程序制作一个 USB 驱动程序以将 AT 命令发送到调制解调器吗 或者就像一个路由器 我可以使用IP地址访问它 谢谢 如果 Windo
  • 如何检查命令是否可用或存在?

    我正在 Linux 上用 C 语言开发一个控制台应用程序 现在 它的可选部分 不是必需的 取决于可用的命令 二进制文件 如果我检查system 我越来越sh command not found作为不需要的输出 并将其检测为存在 那么我该如何
  • 如何禁用vim中的内置命令

    在vim中 当我点击 wq这几乎总是在尝试输入时发生的意外 w 我想禁用 wq 我发现的最接近的是cmap 但它有一些奇怪的行为 如果我做类似的事情 cmap wq w 我什至无法输入 wq 它只是重新映射击键顺序wq to w在命令模式下
  • 我可以通过 DataTrigger (XAML) 调用函数吗?

    我在 xaml cs 中有一个我想调用的函数 xaml cs private void treeView SelectedItemChanged object sender EventArgs e treeView ScrollToCent
  • node.js -- 同步执行命令并获取结果

    我试图在 node js 中同步执行 child process 是的 我知道这很糟糕 我有充分的理由 并检索 stdout 上的任何输出 但我不太清楚如何 我发现这个帖子 Node js同步执行系统命令 https stackoverfl
  • Adobe AIR 执行程序

    我想按下 Adob e AIR 应用程序中的按钮并执行某些已安装的程序 例如 我有一个名为 Start Winamp 的按钮 当按下这个按钮时 它应该直接启动 Winamp exe 我不想执行一些命令行 我只想启动一个 exe 或者 是同一
  • 通过 Java 执行 ADS 相关的 Powershell 命令不起作用,使用 2 种不同的方式时会出现 2 种不同的错误

    我一直在尝试通过 java 在 powershell 会话中执行一组命令 但还没有成功 我的目标是在 AD 中搜索域为 domain com 的计算机对象 我从一个命令开始 不幸的是 以下命令在我的 powershell 提示符下成功运行
  • 从 UNIX 树中删除路径前缀

    我对 UNIX 命令有一个要求 我有一条与此类似的路径 path to file manyfiles extensions 现在我想要的输出类似于 file manyfiles extensions 现在我可以列出 path to 和 pa
  • Maya Python 中的 cmds.scriptCtx 到底有什么作用?

    我想知道 cmds scriptCtx 命令到底是做什么的 因为我尝试将其直接从 Autodesk 帮助页面复制并粘贴到我的脚本编辑器中 但没有任何反应 以下是 Autodesk 帮助中的脚本 import maya cmds as cmd
  • 定义一个调用另一个 emacs 命令的 emacs 命令(保留交互式内容)

    如何定义一个 emacs 命令 X 执行某些操作 然后调用另一个 emacs 命令 Y 并复制命令 Y 的交互界面 我想定义查询替换的替代版本 并临时切换大小写折叠搜索的值 defun alt query replace a b c d e
  • 不读取 awk 命令文件中的文件第一行

    我无法使我的 awk 命令列表无法读取数据文件的第一行 它必须读取除第一行之外的每一行 然后将运动员和年份连接成一个字符串 后来在程序中我使用了数组 我没有列出所有代码 下面列出了数据文件的前两行 我需要让它不读取标题行 而只从第一位运动员
  • 如何使用 vi 编辑器在 KornShell 命令行中自动完成

    在 KornShell ksh 上AIX UNIX 版本 5 3将编辑器模式设置为 vi 使用 set o vi 在 shell 命令行中按什么键可以自动完成文件或目录名 ESC 至少在 AIX4 2 上工作得很好 我注意到的一件事是它只自
  • GIT 不跟踪文件

    我已经在 AIX 6 1 上设置了 GIT 但遇到了问题 我遵循的步骤顺序如下所示 我创建一个文件夹 进入文件夹并初始化非裸存储库 初始化用户名和用户电子邮件 创建一个名为index html 的文件 并在该文件中包含一些数据 创建一个名为
  • 在 Windows 命令提示符中使用通配符

    我想知道是否可以在 Windows 命令提示符中使用通配符 例如 如果我想查看以 docx 结尾的目录中的所有文件 在 Linux 上我会输入以下内容ls docx Windows下有类似的工具吗 谢谢 是的你可以 e g 星号字符 可以代
  • WPF UserControls - 在 UserControl 内的按钮上设置 .Command 属性

    我有一个包含按钮和其他一些控件的 UserControl
  • 如何在c#中使用net user

    我正在尝试将 net user 与 c 一起使用 System Diagnostics ProcessStartInfo proccessStartInfo new System Diagnostics ProcessStartInfo n
  • 从java程序调用SVN命令

    我想从 java 程序调用 SVN 命令 update commit 有什么帮助吗 SVN 乌龟SVN 环境 java程序将在jBoss服务器内运行 从应用程序服务器内使用 GUI SVN 客户端是一个非常非常糟糕的主意 而Tortoise
  • CPAN shell 内存不足。在 Unix 上如何给它更多的内存?

    我得到一个Out of memory 所有安装的消息 我以前从未使用过 cpan 并且不太确定它是如何工作的 我做了一个ulimit在 cpan 目录中 结果是无限的 这是我正在看的内容 usr bin perl MCPAN e shell

随机推荐

  • 一个网站引发的程序猿的牢骚,哈哈哈

    2013年大学毕业后 参加工作做的第一个前端项目 北京服装学院 今天调研一个关于iframe的需求 突然想试试 以前那些做IE6兼容的项目是否还在使用 就默默的点开了 十年了 他们没有换网站 我的岁月似乎从这一刻又回来了一次 已经十年了 我
  • Flask学习笔记(二)

    Flask学习笔记 二 1 知识点 1 1虚拟环境 1 1 1virtualenv 1 1 2virtualenvwrapper 1 2web与视图 1 3jinja2 1 3 1template知识点 1 3 2豆瓣列表页 1 3 3视图
  • 锚框损失论文下载 Iou-Loss【IoU Loss、GIoU Loss、 DIoU Loss 、CIoU Loss、 CDIoU Loss、 F-EIoU Loss、α-IoU Loss】

    锚框损失 Iou Loss IoU Loss GIoU Loss DIoU Loss CIoU Loss CDIoU Loss F EIoU Loss IoU Loss 论文打包下载 yolo系列论文https download csdn
  • cocosCreator2.3.x渲染流程深入剖析笔记(三)

    渲染批次合并之顶点 根据前面说过的render flow流程接下来就是重头戏了render流程 其中包括了 检查两个渲染节点是否可以合并 同时把renderData的数据填充到modelBatch里的buffer中去 所有需要渲染的节点都有
  • Kotlin中匿名函数(又称为Lambda,或者闭包)和高阶函数的详解

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到教程 1 匿名函数 fun main 匿名函数 1 定义时不取名字的函数 我们称之为匿名函数 匿名函数通常整体传递给其他函数 或者从其他函数返
  • java中到底该不该用@author标识作者?

    今天查看activiti的README 突然发现一段很有意思的FAQ Why do you not accept author lines in your source code Because the author tags in the
  • Redis基础

    一 Redis入门 1 Redis简介 Redis Remote Dictionary Server 即远程字典服务 是一个基于内存的key value结构数据库 是用C语言开发的一个开源的高性能键值对 key value 数据库 它可以用
  • 基于python 蔬菜价格数据分析 完整代码+数据

    https download csdn net download weixin 55771290 87567123
  • GRU解决预测分类问题(多变量预测多步)

    解决问题的背景 现有五个属性列 前四个属性列作为特征输入 第五个属性列作为标签值 第五个属性列的意义是类别 先需要通过前50步的数据特征预测后10步的类别 即 51 60步 1 直接多输出的方式 直接多输出的方式就是在神经网络的最后加上几个
  • Linux·DNS协议、ICMP协议、NAT技术

    目录 DNS协议 DNS背景 编辑域名简介 域名解析过程 使用dig工具分析DNS过程 ICMP协议 ICMP功能 ICMP协议格式 编辑ping命令 一个值得注意的坑 traceroute命令 NAT技术 NAT技术背景 NAT IP转换
  • 报错:‘NoneType‘ object has no attribute ‘shape‘

    报错 NoneType object has no attribute shape import cv2 as cv img cv imread images1 print img shape img shape 图像大小 行 列 通道数
  • TypeScript基础入门 - 枚举 - 联合枚举与枚举成员的类型

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 转发 TypeScript基础入门 枚举 联合枚举与枚举成员的类型 项目实践仓库 https github com durban89 typescript demo git
  • Unity中添加按钮的方式

    方式一 使用 GUILayout 自动布局 用 GUILayout Button 来创建按钮 会自动的在屏幕的右上角按列排列按钮 这种方式添加的按钮大小和位置都无法改变 为默认值 private void OnGUI if GUILayou
  • f5负载均衡配置文件服务器,f5 负载均衡 dns 服务器 配置

    f5 负载均衡 dns 服务器 配置 内容精选 换一换 查询负载均衡器状态树 可通过该接口查询负载均衡器关联的监听器 后端云服务器组 后端云服务器 健康检查 转发策略 转发规则的主要信息 了解负载均衡器下资源的拓扑情况 GET v2 pro
  • mongodb入门操作

    mongodb入门操作 简单了解一下NoSql NoSql NoSql not only sql 是非关系型数据库系统的统称 它用于超大规模的数据的存储 提供有限的查询功能 mongodb mongodb是一个基于分布式文件存储的数据库系统
  • Rabbit学习笔记

    引言 什么是MQ MQ Message Quene 消息队列 通过典型的生产者和消费者模型不断向消息队列中生产消息 消费者不断从队列中获取消息 因为消息的生产和消费是异步的 而且只关系消息的发送和接收 没有业务逻辑的侵入 轻松地实现系统间解
  • IMU的ROS调试开发工具包:imu_tools

    目录 imu tool包 问题 参数配置便利性问题 实例 调试microstrain 3dm gx5 25 imu 问题 发布的imu姿态与实际imu姿态不一致问题 imu tool包 http wiki ros org imu tools
  • Java串口通信-JSerialComm

    Java串口通信 JSerialComm 目前网上的Java串口通信主要使用RXTXComm 但是这个库已经很久没有更新 最近的更新似乎在2012年 并且与JavaFX集成打包时会出现BUG JSerialComm是一个较新的串口通信库 其
  • 深度学习——权重的初始值

    权重的初始值 权重的初始值十分重要 关系到神经网络的学习是否成功 可以将权重初始值设置为0吗 为了抑制过拟合 提高泛化能力 采用权值衰减的方法 它是一种以减小权重参数的值为目的进行学习的方法 在误差反向传播法中 所有的权重值都会进行相同的更
  • truss 命令

    truss 命令用途跟踪进程的系统调用 动态装入的用户级函数调用 接收的信号和造成的机器故障 语法truss f c a l d D e i t x Syscall s Signal m Fault r w FileDescriptor u