linux进程调用函数情况,linux ltrace-跟踪进程调用库函数的情况

本文详细介绍了Linux系统下的ltrace和strace命令,它们分别用于跟踪进程调用库函数和系统调用的情况。通过实例展示了如何使用ltrace的选项如-c, -T, -S来计算调用时间、输出系统调用以及跟踪子进程,同时也提到了strace在故障排查中的应用。这两个工具对于理解程序执行过程和性能优化非常有帮助。
摘要由CSDN通过智能技术生成

/

/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使用过高导致. ...

随机推荐

转:WaitForSingleObject&lpar;&rpar;函数、WaitForMultipleObject&lpar;&rpar;函数

http://blog.csdn.net/xiaobai1593/article/details/6672193 在多线程下面,有时候我们会希望等待某一线程完成了再继续做其他事情,要实现这个目的,可以 ...

ZeroMQ接口函数之 :zmq&lowbar;msg&lowbar;init&lowbar;data - 从一个指定的存储空间中初始化一个ZMQ消息对象的数据

ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq_msg_init_data zmq_msg_init_data(3) ØMQ Manual - ØMQ/3.2.5 ...

C语言 二级指针内存模型③

//二级指针内存模型③ #define _CRT_SECURE_NO_WARNINGS #include #include #incl ...

viewpager&plus;fragment&plus;HorizontalScrollView

xml布局

Windows pyqt4 bat自动转换UI文件--&gt&semi;&period;pyw文件

/***************************************************************************** * Windows pyqt4 bat自动 ...

1065&colon; &lbrack;NOI2008&rsqb;奥运物流 - BZOJ

Sample Input4 1 0.52 3 1 310.0 10.0 10.0 10.0Sample Output30.00 推荐题解:http://blog.csdn.net/whjpji/art ...

【转载】32复用时钟AFIO开启情况

原文:http://blog.csdn.net/u012411027/article/details/44217313 百度了很多结果,打开看几乎全是下面这篇文章,真是天下文章一大抄啊.我也抄一下吧. ...

Java-Enumeration总结

纸上得来终觉浅,绝知此事要躬行  --陆游    问渠那得清如许,为有源头活水来  --朱熹 Enumeration(枚举)接口的作用和Iterator类似,只提供了遍历Vector和HashTabl ...

WPF:使用TypeConverter

所谓TypeConverter就是类型转换器,支持两种类型之间相互转换 你可以重写转换逻辑,只要你清楚转换的协议,就可以实现类型互转. 定义一个Person类型,具有一个int类型的Age属性: pu ...

php 查询mysql数据批量转为PDF文件二(批量使用wkhtmltopdf html导出PDF)

上节讲到配置wkhtmltopdf,这节讲下如何批量操作 首先讲下wkhtmltopdf如何使用 直接命令行输入: wkhtmltopdf http://www.baidu.com/  baidu.p ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值