강좌 & 팁
글 수 2,412
2012.03.23 11:30:26 (*.52.177.29)
48534
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에서 시작하여 종료될때 까지의 내용을 보여 줍니다.