说明:本文档简要描述了ltrace的命令,在文末有本命令的基本应用。
ltrace - A library call tracer
Trace library calls of a given program.1。 -a, --align=COLUMN align return values in a secific column.
对齐具体某个列的返回值2。 -c count time and calls, and report a summary on exit.
计算时间和调用,并在程序退出时打印摘要3。 -C, --demangle decode low-level symbol names into user-level names.
解码低级别名称(内核级)为用户级名称4。 -d, --debug print debugging info.
打印调试信息5。 -e expr modify which events to trace.
改变跟踪的事件6。 -f follow forks.
跟踪子进程7。 -h, --help display this help and exit.
打印帮助信息8。 -i print instruction pointer at time of library call.
打印指令指针,当库调用时9。 -l, --library=FILE print library calls from this library only.
只打印某个库中的调用10。 -L do NOT display library calls.
不打印库调用(注,不打印库调用信息,咱要你做什么呀)11。 -n, --indent=NR indent output by NR spaces for each call level nesting.
对每个调用级别嵌套以NR个空格进行缩进输出12。 -o, --output=FILE write the trace output to that file.
把输出定向到文件13。 -p PID attach to the process with the process ID pid.
附着在值为PID的进程号上进行ltrace14。 -r print relative timestamps.
打印相对时间戳15。 -s STRLEN specify the maximum string size to print.
设置打印的字符串最大长度16。 -S display system calls.
显示系统调用17。 -t, -tt, -ttt print absolute timestamps.
打印绝对时间戳18。 -T show the time spent inside each call.
输出每个调用过程的时间开销19。 -u USERNAME run command with the userid, groupid of username.
使用某个用户ID或组ID来运行命令20。 -V, --version output version information and exit.
打印版本信息,然后退出21。 -x NAME treat the global NAME like a library subroutine.
----- 不好意思,这句话还真不知怎么翻译好 --------#########################################################################################下面是常见的几种应用场景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 ) = 24printf("no1:%d \t no2:%d \t diff:%d\n", 9, 7, 2no1:9 no2:7 diff:2 ) = 23printf("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) = 0x9e20000SYS_access(0xa4710f, 4, 0xa4afc0, 0, 0xa4b644) = 0SYS_open("/etc/ld.so.preload", 0, 02) = 3SYS_fstat64(3, 0xbfbd7a94, 0xa4afc0, -1, 3) = 0SYS_mmap2(0, 17, 3, 2, 3) = 0xb7f2a000SYS_close(3) = 0SYS_open("/lib/libcwait.so", 0, 00) = 3SYS_read(3, "\177ELF\001\001\001", 512) = 512SYS_fstat64(3, 0xbfbd76fc, 0xa4afc0, 4, 0xa4b658) = 0SYS_mmap2(0, 4096, 3, 34, -1) = 0xb7f29000SYS_mmap2(0, 5544, 5, 2050, 3) = 0x423000SYS_mmap2(0x424000, 4096, 3, 2066, 3) = 0x424000 .............省去若干行