您的位置首页>企业动态>

Linux strace命令的用法

导读 大家好,我是极客范的本期栏目编辑小友,现在为大家讲解Linux strace命令的用法问题。介绍strace通常用于在进程执行期间跟踪系统调用和接

音频解说

大家好,我是极客范的本期栏目编辑小友,现在为大家讲解Linux strace命令的用法问题。

介绍strace通常用于在进程执行期间跟踪系统调用和接收到的信号。在Linux世界中,进程不能直接访问硬件设备。当进程需要访问硬件设备时(如读取磁盘文件和接收网络数据等。),它们必须从用户模式切换到内核模式,并通过系统调用访问硬件设备。Strace可以跟踪进程生成的系统调用,包括参数、返回值和执行时间。Strace参数copy code -c统计每个系统调用的执行时间、次数和错误次数等。-d输出关于标准错误的调试信息。-f跟踪分叉调用生成的子进程。-ff如果提供-o文件名,所有进程的跟踪结果都输出到相应的文件名。pid,是每个进程的进程号。-F试图跟踪vfork调用。当-f时,不会跟踪vfork。-h输出简短的帮助信息。-i输出系统调用的入口指针。-q禁止输出有关脱离的消息。-r打印出每个系统调用的相对时间。-t在输出中的每一行之前添加时间信息。-tt在输出的每一行前添加时间。微秒级。-ttt微秒级输出,以秒为单位指示时间。-T显示每次通话消耗的时间。-v输出所有系统调用。经常使用一些关于环境变量、状态、输入和输出的调用。默认不输出strace的版本信息。-v-x以十六进制形式输出非标准字符串。-xx所有字符串都以十六进制形式输出。-一列设置返回值的输出位置。默认值为40。-e expr指定一个表达式来控制如何跟踪。格式如下:[限定符=][!]值1[,值2].限定符只能是trace、缩写、verbose、raw、signal、read和write中的一个。值是用于限定的符号或数字。默认限定符是trace。感叹号是一个否定的符号。例如,-eopen相当于-e trace=open,这意味着只跟踪打开的调用。和电子竞技。=open表示跟踪open以外的调用。有两个特殊的符号,全部和没有。注意,使用了一些外壳!要执行历史记录中的命令,请使用\\。-e trace=设置为仅跟踪指定的系统调用。例如,-e trace=open、close、rean、Write意味着只跟踪这四个系统调用。默认值设置为=全部。-e trace=file仅跟踪与文件操作相关的系统调用。-e trace=仅跟踪与过程控制相关的系统调用的过程。-e trace=network跟踪与网络相关的所有系统调用。-e strace=跟踪与系统信号相关的所有系统的信号。Invoke -e trace=ipc以跟踪与进程通信相关的所有系统调用-e缩写ev=set以设置strace输出的系统调用的结果集。-v和缩写ev=无。默认值是缩写ev=all。实例strace-ooutput . txt-t-TT-etrace=all-p 28979。它意味着跟踪28979进程的所有系统调用(-e trace=all),计算系统调用所花费的时间和开始时间(并以分钟和秒钟的可视格式显示),最后将记录的结果存储在output.txt文件中。Strace-f -F-o ~/dcop-strace . txt dcop server在这里,-F-F选项告诉strace同时跟踪来自fork和vfork的进程,而-o选项将所有strace输出写入~/dcop-strace . txt . dcop server是一个需要启动和调试的程序。strace-F-F-ff-s 1024-p 9805 # strace-F-F-ff-o MySQL d-strace-s 1024-p MySQL _ PID # find。/-name ' mysqld-strace * '-type f-print | Xas grep-n ' select。* from ' monitors MySQL process strace-c-p 9805 strace-t-TT-s512-p 15069跟踪web服务器系统调用# strace-F-F-s 1024-o nginx-strace/usr/local/nginx/sbin/nginx-c/usr/local/nginx/conf/nginx . conf # strace-F-F-o PHP-fpm-strace/usr/local/PHP/sbin/PHP-fpm-y/usr/
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。