ltrace는 리눅스 프로그램 디버깅시 사용 할 수 있는 유용한 툴 중 하나 이다.

ltrace에 대하여 간략히 살펴 보자.

man 페이지를 살펴 보면 ltrace의 정의는 다음과 같이 "A library call tracer (라이브러리 호출 추적)" 로 정의 되어 있다. 
쉽에 이야기 하면, ltrace를 이용하여 라이브러리 들이 어떻게 호출 되고 있는지 알 수 있는 명령어 이다.

---------------------------------------------------
# ltrace
ltrace: too few arguments
Try `ltrace --help' for more information
# ltrace --help
Usage: ltrace [option ...] [command [arg ...]]
Trace library calls of a given program.

  -a, --align=COLUMN   secific 열에 반환 값을 정렬
  -A ARRAYLEN          배열 요소의 최대 값을 출력
  -c                   카운트 시간, 함수 호출에 대한 요약 보고후 종료
  -C, --demangle       로우레벨 심볼을 유저-레벨 이름 으로 디코딩
  -D, --debug=LEVEL    디버깅 활성화
  -Dh, --debug=help    디버깅 도움말 표시 
  -e expr              추적중인 이벤트의 수정
  -f                   자식( fork() 와 clone()) 을 추적
  -F, --config=FILE    대체되는 설정 파일 로드. ( 반복 처리 가능 )
  -h, --help           이 도움말을 표시 후 종료.
  -i                   라이브러리 호출시 명령 포인터 출력.
  -l, --library=FILE   설정된 라이브러리로 부터 호출된 라이브러리 호출을 출력.
  -L                   라이브러리 호출을 표시하지 않음.
  -n, --indent=NR      출력을 호출 레벨에 따라 "NR" 크기 만큼 들여써서 출력.
  -o, --output=FILE    출력된 메시지를 지정한 파일에 쓴다.
  -p PID               해당 PID 로 호출 되어 있는 프로세스에 ltrace를 이용하여 추적 한다. ( strace와 유사) 
  -r                   타임 스탬프 출력.
  -s STRLEN            출력 할 최대 문자열의 크기 지정.
  -S                   시스템 호출을 표시.
  -t, -tt, -ttt        절대시간으로 타임 스탬프 출력.
  -T                   각각 호출시 소비한 시간 출력.
  -u USERNAME          해당 사용자의 그룹ID, 사용자ID의 명령 수행.
  -V, --version        버전 정보 출력.
  -x NAME              라이브러리의 서브루틴 처럼 전역적으로 설정된 이름으로 처리한다. 

Report bugs to ltrace-devel@lists.alioth.debian.org
---------------------------------------------------


  프로그램이 사용하는 라이브러리 함수들을 모두 로깅해주는 유틸리티 입니다.
  일반적으로 start_main에서 시작하여 종료될때 까지의 내용을 보여 줍니다.