-
ltrace는 사용자 공간 애플리케이션의 공유 라이브러리에 대한 호출을 보여주는데 사용되는 리눅스의 디버깅 유틸리티이다. 이것은 동적 로딩 시스템을 후킹함으로써 가능해지며, 애플리케이션이 호출 시에 사용하는 파라미터들과 라이브러리 호출이 리포트하는 반환 값을 보여주는 심(shim)들을 삽입한다. ltrace는 또한 리눅스 시스템 호출을 트레이스할 수 있다. 이것이 동적 라이브러리 후킹 메커니즘을 사용하기 때문에, ltrace는 대상 바이너리에 직접적으로 정적 링크된 호출들을 트레이스할 수 없다.
정적 라이브러리 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 정적 라이브러리(Static Library)는 컴파일 타임에 호출자가 resolve 하는 루틴, 외부 함수, 변수의 집합으로 목적 파일과 단독 실행 파일 생성 중에 컴파일러와 링커에 의해 대상 애플리케이션에 복사된다.[1] 실행 파일을 이와 같은 방식으로 컴파일 하는 과정 또는 실행 파일 그 자체를 프로그램의 정적 빌드라고 부른다. 역사적으로 라이브러리는 정적(static)일 수만 있었다. 정적 라이브러리는 빌드/링크 과
ko.wikipedia.org
ltrace는 간단하게 말하면 라이브러리에 대한 호출을 보여주는 디버깅 유틸리티이다.
strace(ptrace)는 시스템 콜을 trace하여 커널과 프로세스의 상호작용을 trace하여 ltrace와는 관찰 지점이 다르다.
ltrace ps로 ps 명령어 수행 시 동작을 후킹한 결과의 일부 라이브러리 단위로 호출 시 argument와 return value를 순서대로 보여주고 있다.
이 때, 파라미터의 종류와 argument가 가지는 의미를 알아보기 쉽지 않으며
단순한 ps도 매우 많은 라이브러리 콜을 출력하는데다 텍스트로 나열되어 한눈에 보기가 힘들다.
다음 글에서는 ltrace의 기본적인 사용법과 각 option의 의미를 정리해보도록 한다.
'정보정리' 카테고리의 다른 글
ReJSON (Redis JSON module) docker 사용 없이 설치하는 법 (0) 2020.01.20 ltrace 사용법 (0) 2020.01.17 MongoDB caching 방법 (0) 2020.01.03 MongoDB 서비스처럼 띄우는 법 (0) 2020.01.03 MongoDB aggregate 기본 사용법 (0) 2020.01.03