使用strace和ltrace跟踪程序调用
1.系统调用的输出对比
程序代码:
#include <stdio.h>
main(){char str[]= "Abcde";printf("\n string = %s length = %d \n",str,str_length(str));
}int str_length (const char *s){int length = 0;while (*s++){length++;}return (length);
}
用#ltrace跟踪程序:
用#strace跟踪程序:
我们看到程序调用write()系统调用做了输出,同时strace还把程序运行时所做的系统调用都打印出来了.
![](/assets/blank.gif)
注:我们看到它实际是用SYS_write系统调用来做打印输出,其实write()函数是SYS_write的封装,SYS_write是真正的系统调用.
2.ltrace/strace的耗时
# ltrace -c dd if=/dev/urandom of=/dev/null count=1000
我们再来看一下strace所花费的时间:
# strace -c dd if=/dev/urandom of=/dev/null count=1000
3.ltrace与strace的相同点
![](/assets/blank.gif)
![](/assets/blank.gif)
扩充阅读:
技巧: 使用truss、strace或ltrace诊断软件的"疑难杂症"
使用strace和ltrace跟踪程序调用相关推荐
- 使用truss、strace或ltrace诊断软件的疑难杂症
原文链接 简介 进程无法启动,软件运行速度突然变慢,程序的"Segment Fault"等等都是让每个Unix系统用户头痛的问题,本文通过三个实际案例演示如何使用truss.str ...
- Shell命令-管理与性能监视之strace、ltrace
内容更新中 转载于:https://www.cnblogs.com/wjcLinux/p/11125826.html
- strace,ltrace linux下跟踪进程调用的命令
本工具可以用来做大多数排除,比如mount一个NFS,很慢,找不出原因,我们可以使用strace命令来跟中mount这个经常所有的调用过程. strace 命令是一种强大的工具,它能够显示所有由 ...
- linux truss strace ltrace 对比 诊断调试程序
strace.ltrace.truss作用 1.了解一个程序的工作原理(可以了解Linux下很多常用的命令实现的原理): 2.帮助定位程序中的问题(在开发工作时帮助定位问题): strace stra ...
- ltrace, strace
ltrace能够跟踪进程的库函数调用,它会显现出哪个库函数被调用,而strace则是跟踪程序的每个系统调用. 下面是一个ltrace与strace的对比 1)系统调用的输出对比 我们用输出hello ...
- strace ltrace使用
1.strace # strace ./test# ps aux | grep test 1045# strace -s 500 -p 1045 示例:打印执行ls时跟文件有关的系统调用.# stra ...
- linux的strace命令
linux的strace命令 strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用. strace 显示这些调用的参数并返回符号形式的值.strace 从内核接收信息,而且不 ...
- strace使用详解(未研究)
(一) strace 命令 用途:打印 STREAMS 跟踪消息. 语法:strace [ mid sid level ] ... 描述:没有参数的 strace 命令将所有的驱动程序和模块中的 ...
- linux的strace命令(详解)
linux的strace命令(详解) 本文详细讲述linux下的strace命令的用法. strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用. strace 显示这些调用的 ...
最新文章
- mysql单列索引和多列索引_mysql索引类型 normal, unique, full text
- 企业架构 - 组织角色和技能
- excel两个表格数据对比_Excel表格怎么防止看错数据?阅读模式了解一下
- 站着办公有助减轻体重
- android uid systemui,(android)system ui 内存优化
- IOS15的抽屉效果
- python各版本区别_关于python中不同版本的print区别
- PWN-PRACTICE-BUUCTF-16
- java public 继承_java继承问题
- C# 串口操作系列(5)--通讯库雏形
- abaqus实例手册_ABAQUS_6.10例子问题手册(目录)
- 当前目录未找到系统,请尝试选择更深层的目录再次搜索解决方法
- Required field ‘client_protocol‘ is unset!
- mac mojava 安装php56的正确姿势
- Redhat使用yum install时提示This system is not registered with an entitlement server 的解决办法
- 长沙市取消职称英语和计算机,哪些城市已取消职称英语考试?
- 800个有趣句子帮你记忆7000个单词
- 【博文汇总】Java程序设计语言
- JavaSE 软件工程师 认证考试试卷3
- randomize方式总结
热门文章
- mysql www.school.com_MySQL 基础学习
- Numpy数组图像基本操作方法,及截取ROI、增加行与列
- C指针4:数组指针(指向数组的指针)
- Python 骚操作:微信远程控制电脑
- 1. CVPR2021-Papers-with-Code-Demo(CVPR2021论文下载)
- jvm 堆外内存_NIO效率高的原理之零拷贝与直接内存映射
- 基于成像激光雷达的鲁棒位置识别
- Qt中openGL的四个重要事件(initializeGL() resizeGL() paintGL() pdateGL())调用规则
- vue中轻松搞掂鼠标气泡框提示框tip跟随
- C#和Unity编码和游戏开发学习教程