排错工具strace
作者:互联网
排错工具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