ltrace查看库调用

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

posted @ 2013-04-22 01:35  浪里飞  阅读(265)  评论(0编辑  收藏  举报