/

/ltrace

ltrace命令是用来跟踪进程调用库函数的情况。

语法

ltrace [option ...] [command [arg ...]]

选项

-a 对齐具体某个列的返回值。

-c 计算时间和调用,并在程序退出时打印摘要。

-C 解码低级别名称(内核级)为用户级名称。

-d 打印调试信息。

-e 改变跟踪的事件。

-f 跟踪子进程。

-h 打印帮助信息。

-i 打印指令指针,当库调用时。

-l 只打印某个库中的调用。

-L 不打印库调用。

-n, --indent=NR 对每个调用级别嵌套以NR个空格进行缩进输出。

-o, --output=file 把输出定向到文件。

-p PID 附着在值为PID的进程号上进行ltrace。

-r 打印相对时间戳。

-s STRLEN 设置打印的字符串最大长度。

-S 显示系统调用。

-t, -tt, -ttt 打印绝对时间戳。

-T 输出每个调用过程的时间开销。

-u USERNAME 使用某个用户id或组ID来运行命令。

-V, --version 打印版本信息,然后退出。

-x NAME treat the global NAME like a library subroutine.(求翻译)

实例

最基本应用,不带任何参数:

[guest@localhost tmp]$ ltrace ./a.out

__libc_start_main(0x80484aa, 1, 0xbfc07744, 0x8048550, 0x8048540

printf("no1:%d \t no2:%d \t diff:%d\n", 10, 6, 4no1:10 no2:6 diff:4 ) = 24

printf("no1:%d \t no2:%d \t diff:%d\n", 9, 7, 2no1:9 no2:7 diff:2 ) = 23

printf("no1:%d \t no2:%d \t diff:%d\n", 8, 8, 0no1:8 no2:8 diff:0 ) = 23

--- SIGFPE (Floating point exception) ---

+++ killed by SIGFPE +++

输出调用时间开销:

[guest@localhost tmp]$ ltrace -T ./a.out

__libc_start_main(0x80484aa, 1, 0xbf81d394, 0x8048550, 0x8048540

printf("no1:%d \t no2:%d \t diff:%d\n", 10, 6, 4no1:10 no2:6 diff:4 ) = 24 <0.000972>

printf("no1:%d \t no2:%d \t diff:%d\n", 9, 7, 2no1:9 no2:7 diff:2 ) = 23 <0.000155>

printf("no1:%d \t no2:%d \t diff:%d\n", 8, 8, 0no1:8 no2:8 diff:0 ) = 23 <0.000153>

--- SIGFPE (Floating point exception) ---

+++ killed by SIGFPE +++

显示系统调用:

[guest@localhost tmp]$ ltrace -S ./a.out

SYS_brk(NULL) = 0x9e20000

SYS_access(0xa4710f, 4, 0xa4afc0, 0, 0xa4b644) = 0

SYS_open("/etc/ld.so.preload", 0, 02) = 3

SYS_fstat64(3, 0xbfbd7a94, 0xa4afc0, -1, 3) = 0

SYS_mmap2(0, 17, 3, 2, 3) = 0xb7f2a000

SYS_close(3) = 0

SYS_open("/lib/libcwait.so", 0, 00) = 3

SYS_read(3, "\177ELF\001\001\001", 512) = 512

SYS_fstat64(3, 0xbfbd76fc, 0xa4afc0, 4, 0xa4b658) = 0

SYS_mmap2(0, 4096, 3, 34, -1) = 0xb7f29000

SYS_mmap2(0, 5544, 5, 2050, 3) = 0x423000

SYS_mmap2(0x424000, 4096, 3, 2066, 3) = 0x424000

.............省去若干行

linux下对进程按照内存使用情况进行排序

linux下对进程按照内存使用情况进行排序的命令为:ps aux --sort -rss 详细解说参见 http://alvinalexander.com/linux/unix-linux-proce ...

Linux 实时查看进程网络的使用情况

一行代码实现 linux 指定进程网络的使用情况 pid=4203;count=0;while true;do info2=`sed -n '4,100p' /proc/$pid/net/dev |a ...

Linux中查看进程占用内存的情况【转】

转自:http://hutaow.com/blog/2014/08/28/display-process-memory-in-linux/ Linux中查看某个进程占用内存的情况,执行如下命令即可,将 ...

Linux 中查看进程及资源使用情况

top 自带的 top 命令类似于平时我们使用的任务管理器,能够列出当前系统中的进程及资源的使用情况. $ man top top - display Linux tasks 使用起来很简单,不加任何 ...

linux 查看Java 进程的内存使用情况

top -b -n 1 | grep java| awk '{print "PID:"$1",mem:"$6",CPU percent:"$ ...

linux strace-跟踪进程的系统调用或是信号产生情况&comma;lstrace-跟踪己丑年调用库函数情况,进程跟踪调试命令

本工具可以用来做大多数排除,比如mount一个NFS,很慢,找不出原因,我们可以使用strace命令来跟中mount这个经常所有的调用过程. strace 命令是一种强大的工具,它能够显示所有由用户空 ...

Linux查看当前使用的网卡 以及 查看某进程使用的网络带宽情况 以及 端口占用的情况

一:Linux查看当前使用的网卡          ifconfig命令可以查看当前linux 系统有多少个网卡. [app@p2-app2 ~]$ ifconfig br-2e5b046a02d5: ...

在windows和linux下如何查看80端口占用情况&quest;是被哪个进程占用&quest;如何终止等

一.在windows下如何查看80端口占用情况?是被哪个进程占用?如何终止等 这里主要是用到windows下的DOS工具,点击"开始"--"运行",输入&quo ...

Linux查看某个进程的磁盘IO读写情况 pidstat

一.现象 1)钉钉告警不断,告警如下CPU使用达到100% 普罗米修斯监控 2)查看数据库,没有发现比平时同一时段,业务量的增加.但是,数据库显示latch free等告警,验证了CPU使用过高导致. ...

随机推荐

JAVASCRIPT和JQUERY判断浏览器信息总汇(备忘)

15个顶级Java多线程面试题及回答

Java 线程面试问题 在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分.如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于多线程 的问题.在投资银行业务中多线程和并发 ...

WCF入门的了解准备工作

了解WCF, 及WCF入门需要掌握哪里基本概念? 1.准备工作 >1.1 . XML >1.2 . Web Service >1.3 . 远程处理 (RPC) >1.4.  消 ...

cs231n spring 2017 lecture7 Training Neural Networks II 听课笔记

1. 优化: 1.1 随机梯度下降法(Stochasitc Gradient Decent, SGD)的问题: 1)对于condition number(Hessian矩阵最大和最小的奇异值的比值)很 ...

让Python支持中文注释

在第一行中加入如下行即可,表示文件的编码: #coding=utf-8 或 #coding=gbk

制作docker-jdk7-zookeeper镜像&lpar;非集群版&rpar;

## 准备工作 用到的工具, Xshell5, Xftp5, jdk-7u79-linux-x64.tar.gz, zookeeper-3.4.9.tar.gz, docker.io/centos:l ...

SQL-48 将所有获取奖金的员工当前的薪水增加10&percnt;。

题目描述 将所有获取奖金的员工当前的薪水增加10%.create table emp_bonus(emp_no int not null,recevied datetime not null,btyp ...

虚拟机vbox

https://www.virtualbox.org/wiki/Linux_Downloads 一直在报内核出错的问题,我尝试了各种方法还是无果,猜测是版本的问题,这里推荐各位安装virtualbox ...

React-使用styled-components

1.安装 npm install --save styled-components 2.简单使用 style.js: import styled from 'styled-components'; i ...

Tornado &plus; Celery &plus; RabbitMQ

声明:代码是从项目中截取的, 为进行测试 使用Celery任务队列,Celery 只是一个任务队列,需要一个broker媒介,将耗时的任务传递给Celery任务队列执行,执行完毕将结果通过broker ...

linux跟踪函数代码,linux ltrace-跟踪进程调用库函数的情况相关推荐

  1. LINUX ltrace命令-用来跟踪进程调用库函数的情况学习

    参考链接: http://www.bluestep.cc/linux-ltrace%E5%91%BD%E4%BB%A4-%E7%94%A8%E6%9D%A5%E8%B7%9F%E8%B8%AA%E8% ...

  2. 9.11 strace:跟踪进程的系统调用 、ltrace:跟踪进程调用库函数

    strace 是Linux环境下的一款程序调试工具,用于检查一个应用程序所使用的系统调用以及它所接收的系统信息.strace会追踪程序运行时的整个生命周期,输出每一个系统调用的名字.参数.返回值和执行 ...

  3. linux注册函数机制,Linux可信计算机制模块详细分析之函数实现机制(1)字符设备驱动...

    原标题:Linux可信计算机制模块详细分析之函数实现机制(1)字符设备驱动 2.3 函数实现机制 2.3.1 Linux 字符设备驱动 在linux 3.5.4中,用结构体cdev描述字符设备,cde ...

  4. linux getenv函数 get,linux之getenv putenv setenv和unsetenv详解

    1.getenv函数 头文件:#include 函数原型: char * getenv(const char* name); 函数说明:getenv()用来取得参数name环境变量的内容. 函数参数: ...

  5. linux简单重定向代码,Linux Shell编程(26)——代码块重定向

    像 while, until, 和 for 循环代码块, 甚至 if/then 测试结构的代码块都能做到标准输入的重定向. 即使函数也可以使用这种重定向的格式 .所有的这些依靠代码块结尾的 < ...

  6. linux execl函数讲解,Linux下execl函数学习

    Linux下头文件 #include 函数定义 int execl(const char *path, const char *arg, ...); 函数说明 execl()其中后缀"l&q ...

  7. linux 打印函数宏,linux内核中的嵌入式汇编宏函数

    在看linux内核代码时,常会遇到诸如:static inline _syscall0(int,fork)这样的函数.经查阅资料,发现该函数是嵌入式汇编宏函数. linux内核提供了7个非常有用的宏定 ...

  8. linux poll函数 实现,Linux select/poll/epoll 原理(一)实现基础

    本序列涉及的 Linux 源码都是基于 linux-4.14.143 . 1. 文件抽象 与 poll 操作 1.1 文件抽象 在 Linux 内核里,文件是一个抽象,设备是个文件,网络套接字也是个文 ...

  9. linux c++ 函数效率,Linux C++程序进行性能分析工具gprof使用入门

    性能分析工具 软件的性能是软件质量的重要考察点,不论是在线服务程序还是离线程序,甚至是终端应用,性能都是用户体验的关键.这里说的性能重大的范畴来讲包括了性能和稳定性两个方面,我们在做软件测试的时候也是 ...

  10. linux管道阻塞代码,linux中的管道

    管道是一种最基本的IPC机制,由pipe函数创建:#include int pipe(int filedes[2]); 调用pipe函数就是在内核区开辟一块缓冲区(称为管道).filedes[0]指向 ...

最新文章

  1. Java日志体系总结
  2. python知识:如何从图片的四周扩大一些尺寸
  3. Oracle的AWR报告分析
  4. 【Github开源】一站搞定各种开发文档
  5. oppoJava面试题,java声明全局变量的关键字
  6. 厚积薄发,丰富的公用类库积累,助你高效进行系统开发(10)---各种线程同步的集合类...
  7. gpu云服务器运行游戏_追求高性能游戏,高帧高画质运行,你的手机需要多强的GPU才够?...
  8. cad插入块_CAD图块全攻略:别羡慕我下班早,我的CAD软件会开挂!
  9. Chromium内核和Webkit的关系到底是什么?
  10. 体脂秤里的测脂模块方案,测量体脂全靠它?
  11. 心法利器[53] | 数据增强的现实应用思考
  12. 抓紧收藏,9大短视频自媒体工具,帮你快速月入过万,不真人出镜
  13. 高考数学95分能学计算机吗,数学模考5分到高考95分?
  14. Ubuntu系统下创建本地源
  15. android mp3 wav转换工具,音频提取转换工具app
  16. 128Echarts - 关系图(NPM Dependencies)
  17. spring --jia包依赖坐标收集
  18. 送给她最最浪漫的表白(Python代码实现)
  19. 数据库之查询表student——查询计算机系年龄在20岁以下的学生姓名
  20. 我的hexo站点主题config.yml文件配置

热门文章

  1. idea的tomcat实现热部署遇到的问题
  2. Confluence 6 配置 Office 转换器
  3. Maven刷新后jdk变成jre
  4. Java 数据结构之双链表
  5. jabc spring
  6. 详解Bootstrap列表组组件
  7. CheckedListBoxControl 实现复选框的单选与多选功能
  8. [ACL17]A Minimal Span-Based Neural Constituency Parser(一个最小化的基于跨度的神经句法分析器)...
  9. LeetCode—2.堆排序算法
  10. 动态规划--代码随想录