Ltrace

ltrace는 사용자 공간 애플리케이션의 공유 라이브러리에 대한 호출을 보여주는데 사용되는 리눅스의 디버깅 유틸리티이다. 이것은 동적 로딩 시스템을 후킹함으로써 가능해지며, 애플리케이션이 호출 시에 사용하는 파라미터들과 라이브러리 호출이 리포트하는 반환 값을 보여주는 심(shim)들을 삽입한다. ltrace는 또한 리눅스 시스템 호출을 트레이스할 수 있다. 이것이 동적 라이브러리 후킹 메커니즘을 사용하기 때문에, ltrace는 대상 바이너리에 직접적으로 정적 링크된 호출들을 트레이스할 수 없다.

출력 예시 
다음은 xterm 호출의 처음 몇 라인들이다. 이것은 ltrace가 보여주는 다양한 라이브러리들(C 표준 라이브러리(malloc, strlen), POSIX 라이브러리(getuid) 등)에 대한 호출들을 보여준다. 호출의 반환 값은 = 기호 뒤에 나오는 값이다.[pid 11783] __libc_start_main(0x407420, 1, 0x7fff75b6aad8, 0x443cc0, 0x443d50 <unfinished ...>
[pid 11783] geteuid()                            = 1000
[pid 11783] getegid()                            = 1000
[pid 11783] getuid()                             = 1000
[pid 11783] getgid()                             = 1000
[pid 11783] setuid(1000)                         = 0
[pid 11783] malloc(91)                           = 0x00cf8010
[pid 11783] XtSetLanguageProc(0, 0, 0, 0x7f968c9a3740, 1) = 0x7f968bc16220
[pid 11783] ioctl(0, 21505, 0x7fff75b6a960)      = 0
[pid 11783] XtSetErrorHandler(0x42bbb0, 0x44f99c, 0x669f80, 146, 0x7fff75b6a72c) = 0
[pid 11783] XtOpenApplication(0x670260, 0x44f99c, 0x669f80, 146, 0x7fff75b6a72c) = 0xd219a0
[pid 11783] IceAddConnectionWatch(0x42adc0, 0, 0, 0x7f968c9a3748, 0 <unfinished ...>
[pid 11783] IceConnectionNumber(0xd17ec0, 0, 1, 0xcfb138, 0xd17c00) = 4
[pid 11783] <... IceAddConnectionWatch resumed> ) = 1
[pid 11783] XtSetErrorHandler(0, 0, 1, 0xcfb138, 0xd17c00) = 0
[pid 11783] XtGetApplicationResources(0xd219a0, 0x6701c0, 0x66b220, 34, 0) = 0
[pid 11783] strlen("off")                        = 3

같이 보기 
 strace - 리눅스의 시스템 호출 트레이서
 ktrace - *BSD의 시스템 호출 트레이서
 truss - 고전적인 시스템 호출 트레이서
 dtrace - 솔라리스 / OS X / BSD 커널 트레이싱 툴.
 SystemTap - 리눅스 커널 트레이싱 툴.

외부 링크 
 홈 페이지
 ltrace man 페이지
 Rodrigo Rubira Branco, Ltrace Internals, Ottawa Linux Symposium 2007
 latrace, LD_AUDIT libc 특징을 사용하여 동작하는 동적 라이브러리 호출 트레이서

유닉스 프로그래밍 도구