ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

排错工具strace

2022-06-20 12:31:53  阅读:197  来源: 互联网

标签:调用 trace strace 排错 信号量 ipcs 进程 工具


排错工具strace

strace是用来跟踪用户空间进程的系统调用和信号的 。 可用于诊断、调试和教学的Linux用户空间跟踪器。可以用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。 监控应用程序使用的系统调用,查看底层系统函数。 底层使用内核的ptrace特性来实现其功能。

示例用法

strace -tt -f  ./some_server ../conf/some_server.conf
strace -tt -T -v -f -e trace=file -o /data/log/strace.log -s 1024 -p 23489
strace -tt -f  ./some_server ../conf/some_server.conf
strace -o strace.log -tt -p 24298
strace -tt -f -e trace=ipc ./a_mon_svr     ../conf/a_mon_svr.conf

选项说明

  • -tt 在每行输出的前面,显示毫秒级别的时间
  • -T 显示每次系统调用所花费的时间
  • -v 对于某些相关调用,把完整的环境变量,文件stat结构等打出来。
  • -f 跟踪目标进程,以及目标进程创建的所有子进程
  • -e 控制要跟踪的事件和跟踪行为,比如指定要跟踪的系统调用名称
  • -o 把strace的输出单独写到指定的文件
  • -s 当系统调用的某个参数是字符串时,最多输出指定长度的内容,默认是32个字节
  • -p 指定要跟踪的进程pid, 要同时跟踪多个pid, 重复多次-p选项即可。
  •  -e trace=file     跟踪和文件访问相关的调用(参数中有文件名)
  • -e trace=process  和进程管理相关的调用,比如fork/exec/exit_group
  • -e trace=network  和网络通信相关的调用,比如socket/sendto/connect
  • -e trace=signal    信号发送和处理相关,比如kill/sigaction
  • -e trace=desc  和文件描述符相关,比如write/read/select/epoll等
  • -e trace=ipc 进程见同学相关,比如shmget等

补充 ipcs 

1. 命令格式

  ipcs [resource-option] [output-format]
  ipcs [resource-option] -i id

2. 命令功能

  提供IPC设备的信息

3. 使用方法

 resource选项:

  ipcs -m  查看系统共享内存信息

  ipcs -q  查看系统消息队列信息

  ipcs -s  查看系统信号量信息

  ipcs [-a] 系统默认输出信息,显示系统内所有的IPC信息

  

输出格式控制:

  ipcs -c  查看IPC的创建者和所有者

  ipcs -l  查看IPC资源的限制信息

  ipcs -p  查看IPC资源的创建者和使用的进程ID

  ipcs -t  查看最新调用IPC资源的详细时间

  ipcs -u  查看IPC资源状态汇总信息

额外格式控制:

  ipcs -l --human   以人类可以阅读的方式显示size

  • ipcs -a命令可以查看当前使用的共享内存、消息队列及信号量所有信息
    •   信号量在创建时分信号量集和信号量的概念,该命令的查询结果中,Semaphore Arrays下面每一行代表一个信号量集,其中perms对应信号量集的权限,nsems对应信号量集中信号量的个数,对于信号量集的创建方法可以查询semctl相关的函数使用方法。
  • ipcs -p命令可以得到与共享内存、消息队列相关进程之间的消息
    •   Message Queues PIDs中的msqid既对应上条命令结果中的消息队列id,根据id则可以获取到lspid、lrpid消息,其中lspid代表最近一次向消息队列中发送消息的“进程号”,lrpid对应最近一次从消息队列中读取消息的“进程号”。但请注意:此处的进程号是弱进程号,既它有可能代表的是线程号,如果进程中是起的线程对消息队列发送、接收消息,则此处pid对应的均是线程号。可以采用ps -AL | grep pid来查找该线程对应的进程id。
  • ipcs -u命令可以查看各个资源的使用总结信息,其中可以看到使用的信号量集的个数、信号量的个数,以及消息队列中当前使用的消息个数总数、占用的空间字节数

 

  • ipcs -l命令可以查看各个资源的系统限制信息,可以看到系统允许的最大信号量集及信号量个数限制、最大的消息队列中消息个数等信息。

 

标签:调用,trace,strace,排错,信号量,ipcs,进程,工具
来源: https://www.cnblogs.com/weiweirui/p/16392838.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有