nm으로 ELF 포맷의 심볼 테이블 보기

: 바이너리의 심볼을 볼 때 사용하는 명령어이다.
: nm {binary_file_name} 명령어로 사용한다. 그 결과는 아래와 같이 출력된다.

// Address    symbol_type   symbol_name
08044323 T func1 
...

: 두 번째 필드의 종류는 다음과 같다.

심볼 타입 명 설명
A 주소가 절대적이어서 변경되지 않는 심볼
B 심볼이 BSS 섹션에 존재(un-initialized global varible 등)
C 공통 심볼(un-initialized data)
D 심볼이 data 섹션에 위치(initialized global variable 등)
G 작은 공간의 전역 객체, data 섹션에 위치(initialized data 등)
I 심볼이 다른 심볼의 indirect
N 디버그 심볼
R Read-only 섹션에 존재
S 작은 객체를 위한 BSS 섹션의 심볼
T text 섹션에 있는 심볼(code)
U 정의되지 않은 심볼
V 확정적이지 않은 심볼, 링크 시 확정적인 심볼을 만나면 변경
W 확정적이지 않은 심볼, 링크 시 확정적인 심볼을 만나지 못하면 0으로 설정
- stabs 심볼
? 알수없는 심볼

: nm에서 사용할 수 있는 유용한 옵션은 다음과 같다.

옵션 설명
-a 디버깅 심볼까지 포함해 모든 심볼 출력
-D 동적 심볼만 출력(공유 라이브러리의 심볼 등)
-g 외부 심볼만 출력
-v 주소로 출력 정렬
-s 정적 라이브러리의 심볼 출력 시, 어떤 오브젝트 파일에 존재하는 지 출력
-u 정의되지 않은 심볼만 출력

'빌드&테스트도구 > 기타' 카테고리의 다른 글

readelf - ELF파일 정보 보기  (0) 2020.09.23
gprof - 프로파일 정보 확인  (0) 2020.09.21
Mangling - 심볼명 확인  (0) 2020.09.20

+ Recent posts