ltrace查看库调用

简介: ltrace - A library call tracer strace - trace system calls and signals -S  display system calls 显示系统调用 -t, -tt, -ttt  print absolute times...

ltrace - A library call tracer

strace - trace system calls and signals

-S  display system calls 显示系统调用

-t, -tt, -ttt  print absolute timestamps 打印绝对时间戳

-T  show the time spent inside each call 输出每个调用过程的时间开销

下面是常见的几种应用场景

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

[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 +++

2、输出调用时间开销

[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 +++

3、显示系统调用

[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

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

原文

http://hi.baidu.com/higkoo/item/c48de4950118cc49f14215ca

http://hi.baidu.com/yuanhuiyong/item/eba859d111e6e28f6dce3fea

目录
相关文章
|
开发框架 .NET 数据库
.NETCore 获取数据库上下文[实例的方法和配置连接字符串
.NETCore 获取数据库上下文[实例的方法和配置连接字符串
800 1
|
4月前
|
C语言 Python
python 调用c接口
【10月更文挑战第12天】 ctypes是Python的一个外部库,提供和C语言兼容的数据类型,可以很方便地调用C DLL中的函数
80 0
|
6月前
|
测试技术 数据处理 数据格式
Python中动态类和动态方法的创建与调用
【8月更文挑战第5天】在Python中,`type`函数可用于创建动态类,结合`types.MethodType`可创建动态方法。例如,定义`dynamic_method`后,可通过`type`创建包含该方法的`DynamicClass`。同样,对于已存在的类实例,可通过`types.MethodType`绑定新方法。这种动态特性适用于自动化测试框架或数据处理应用等场景,实现根据需求动态生成类及方法以执行特定逻辑。
|
开发工具 git C++
Qt的简易日志库实现及封装
Qt的简易日志库实现及封装
Python调用Face++API处理图片并保存到本地
Python调用Face++API处理图片并保存到本地
|
JSON 数据格式 Python
Python中如何编写接口,以及如何请求外部接口
Python中如何编写接口,以及如何请求外部接口
606 0
|
Python
Python 获取被调用函数名称,所处模块,被调用代码行
Python 获取被调用函数名称,所处模块,被调用代码行
130 0
|
Java
CheerpJ调用的两种方式
CheerpJ调用的两种方式
261 0
|
C++
如何在C中调用C++的示例代码
如何在C中调用C++的示例代码
112 0

热门文章

最新文章