参考链接:

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%BF%9B%E7%A8%8B%E8%B0%83%E7%94%A8%E5%BA%93%E5%87%BD%E6%95%B0%E7%9A%84%E6%83%85%E5%86%B5/

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 <unfinished ...>
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 <unfinished ...>
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 ltrace命令-用来跟踪进程调用库函数的情况学习相关推荐

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

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

  2. strace,ltrace linux下跟踪进程调用的命令

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

  3. linux ps内存占用率,linux ps命令,查看某进程cpu和内存占用率情况, linux ps命令,查看进程cpu和内存占用率排序。 不指定...

    背景:有时需要单看某个进程的CPU及占用情况,有时需要看整体进程的一个占用情况. 一. linux ps命令,查看某进程cpu和内存占用率情况 [root@test vhost]# ps aux US ...

  4. linux服务进程文件,[Linux实用命令]-6-服务与进程管理

    引言 这篇文章前半部分实例演示Linux系统服务管理相关命令,介绍系统服务的预设启动脚本放置的位置,以及如何启动和停止某个特定服务:后半部分会实例演示几个常用的用来管理系统进程的命令. 文章目录 0× ...

  5. pstack 安装linux_linux下跟踪进程调用栈strace pstack gstack

    pstack PID gstack PID top -H -p PID 引子: 1.在Linux系统中,进程状态除了我们所熟知的TASK_RUNNING,TASK_INTERRUPTIBLE,TASK ...

  6. linux conntrack命令 路由连接 跟踪表 显示删除监听记录

    conntrack命令可以显示,删除和更新跟踪表现有状态条目,还可以监听流事件 1.安装: yum install -y conntrack 2.使用: 查看conntrack表记录 conntrac ...

  7. c语言实现输入输出功能需要调用库函数,C语言学习笔记(二)

    格式字符的输入和输出 1.C语句的分类 1)控制语句    if...else ; continue ; switch ; break ; for(....) ; goto ; while(....) ...

  8. linux常用命令、linux系统、linux属于什么操作系统、linux系统安装、linux怎么读、linux和windows的区别、linux配置ip地址、linux系统一般用来,在线查询工具

    linux vi编辑器常用命令 linux 查看ip linux find -name 查找文件名 linux shell linux 查看端口占用 linux 删除文件命令 linux cp命令复制 ...

  9. Linux必备命令汇总

    文章目录 帮助命令 文件和目录操作命令 查看文件及内容处理命令 文件压缩及解压缩命令 信息显示命令 搜索文件命令 用户管理命令 基础网络操作命令 深入网络操作命令 有关磁盘与文件系统的命令(16个) ...

最新文章

  1. 响应式开发一招致胜 学习视频 分享
  2. Table表格的单元格提示
  3. PHP怎样防止小数点精度不丢失,javascript小数精度丢失的完美解决方法
  4. leetcode1221. 分割平衡字符串(贪心算法)
  5. 基于tkinter模块创建GUI程序(python)
  6. 组织体互联网是个啥?
  7. 华晨中华v3车质量怎么样_宝马发动机加持,销量仅个位数?这些车有点惨
  8. Sql Server 2005如何导入DBF文件?
  9. ansible-handlers
  10. JDK1.4下载 JRE1.4下载
  11. 分布式长连接 session 共享解决方案
  12. 机器人操作空间轨迹规划 -- 姿态规划
  13. 洛谷 P4234 LCT + 排序 + 枚举
  14. android 系统的切图方式_UI设计规范一Android尺寸单位换算及切图规范
  15. M1 Macbook崩溃了怎么办?
  16. 【AR】AR 的几种底层实现方式
  17. 2021 China Open Source Annual Report
  18. java体系的中间件适用于go吗,Go语言经典库使用分析(五)| Negroni 中间件(一)...
  19. 流畅的python读书笔记④:文本和字节序列
  20. 微小宝公众号排行榜_无锡校园公众号排行榜(11.15—11.21)

热门文章

  1. Android总结 之 AsyncTask(二)
  2. 【已解决】TypeError: ‘<‘ not supported between instances of ‘str‘ and ‘int‘_Python系列学习笔记
  3. 11行代码AC——习题2-4 子序列的和(subsequence)——解题报告
  4. QT Creator应用程序开发——信号与槽
  5. iapp启动图代码_代码神器:拒绝重复编码,这款IDEA插件了解一下.....
  6. mybatis mysql查询树形结构_MyBatis collection 集合嵌套查询树形节点
  7. tomcat闪退没有报错_Appium在Android平台几种常见报错的解决方案
  8. python爬虫之美女图片爬取
  9. Android 服务器推送技术
  10. js代码判断身份证号合法性