本帖最后由 yshihyu 于 2013-07-27 22:21 编辑
[code]#include
NAME ltrace - A library call tracer SYNOPSIS ltrace [-CdfhiLrStttV] [-a column] [-e expr] [-l filename] [-n nr] [-o filename] [-p pid] ... [-s strsize] [-u username] [-X extern] [-x extern] ... [--align=column] [--debug] [--demangle] [--help] [--indent=nr] [--library=filename] [--output=filename] [--version] [command [arg ...]] DESCRIPTION ltrace is a program that simply runs the specified comm...
本帖最后由 gudujianjsk 于 2014-07-23 11:17 编辑 今天想编译下ltrace在busybox中使用,首先下载了 ltrace-0.7.3.tar.gz 然后apt-get install libefl-dev 防止configure时提示gelf.h 找不到的问题 make编译 然后遇到2个typedef 定义了未使用的问题 都是在函数内部的typedef 进入函数注释掉即可。然后 make 通过。 但是用file 命令查看生成的 ltrace二进制文件仍然动态编译的: $ file ltrace ltrace: ELF 6...
今天用这两个程序跟踪一个正在运行的程序 strace -p 333 -f xxx -o ./3 ltrace -p 333 然后发现PID为333的程序变成僵尸进程了,整个服务也不能用了,只能重新启动服务器 居然有这样的事。。。
ltrace可以跟踪函数调用,前面我已经说过了。 转载请注明: http://blog.chinaunix.net/u/30686 下午突然发现了ltrace的一个新功能,ltrace不光能跟踪函数的进入,函数的返回也能够获得。有了进入和退出,那么他就可以获得该函数的运行时间。 那么ltrace是如何获得函数的返回呢? 我以前介绍的,是不够的。 总的来说,是通过堆栈。 struct callstack_element { union { int syscall; struct library_symbol * libfunc; ...
ltrace其可以打印出程序运行过程中的库函数调用,其原理是通过解析elf文件,找到需要解析的符号,及该符号所对应的地址。在程序运行起来后,首先使用ptrace技术,将该符号对应的位置替换为软件中断,这样在程序运行到该中断时,会通知ltrace,ltrace从而能打印出当时所调用的函数。 在ltrace中,只时能够列出库函数的调用,那么如何来列出自身的函数调用呢? 在elf文件中,我们可以找到symbol的section,该section中包含了程序...
使用truss、strace或ltrace诊断软件问题 进程无法启动,软件运行速度突然变慢,程序的"Segment Fault"等等都是让每个Unix系统用户头痛的问题,本文通过三个实际案例演示如何使用truss、strace和ltrace这三个常用的调试工具来快速诊断软件的"疑难杂症"。 truss和strace用来跟踪一个进程的系统调用或信号产生的情况,而 ltrace用来跟踪进程调用库函数的情况。truss是早期为System V R4开发的调试程序,包括Aix、Fre...
简介:进程无法启动,软件运行速度突然变慢,程序的"Segment Fault"等等都是让每个Unix系统用户头痛的问题,本文通过三个实际案例演示如何使用truss、strace和ltrace这三个常用的调试工具来快速诊断软件的"疑难杂症"。 truss和strace用来 跟踪一个进程的系统调用或信号产生的情况,而 ltrace用来 跟踪进程调用库函数的情况。truss是早期为System V R4开发的调试程序,包括Aix、FreeBSD在内的大部分Unix系统都自带了这个工具;而str...
本文通过三个实际案例演示如何使用truss、strace和ltrace这三个常用的调试工具来快速诊断软件的"疑难杂症"。 简介 进程无法启动,软件运行速度突然变慢,程序的"Segment Fault"等等都是让每个Unix系统用户头痛的问题,本文通过三个实际案例演示如何使用truss、strace和ltrace这三个常用的调试工具来快速诊断软件的"疑难杂症"。 truss和strace用来跟踪一个进程的系统调用或信号产生的情况,而 ltrace用来跟踪进程调用库函数的情况。...
进程无法启动,软件运行速度突然变慢,程序的"Segment Fault"等等都是让每个Unix系统用户头痛的问题,本文通过三个实际案例演示如何使用truss、strace和ltrace这三个常用的调试工具来快速诊断软件的"疑难杂症"。 truss和strace用来跟踪一个进程的系统调用或信号产生的情况,而 ltrace用来跟踪进程调用库函数的情况。truss是早期为System V R4开发的调试程序,包括Aix、FreeBSD在内的大部分Unix系统都自带了这个工具;而strace...