objdump -options
gravity-free/objdump 2011. 3. 4. 01:50이름
objdump -오브젝트 파일의 정보를 표시한다.
사용법
- objdump
- [-a|--archive-headers] [-b bfdname | --target=bfdname] [-C|--demangle] [--debugging] [-d|--disassemble] [-D|--disassemble-all] [--disassemble-zeroes] [-EB|-EL|--endian={big|little}] [-f|--file-headers] [-h|--section-headers | --headers] [-i|--info] [-j section | --section=section] [-l|--line-numbers] [-m machine | --architecture=machine] [--prefix-addresses] [-r|--reloc] [-R|--dynamic-reloc] [-s|--full-contents] [-S|--source] [--[no-]show-raw-insn] [--stabs] [-t|--syms] [-T|--dynamic-syms] [-x|--all-headers] [--start-address=address] [--stop-address=address] [--adjust-vma=offset] [--version] [--help] objfile...
설명
objdump 는 하나 이상의 오브젝트 파일에 대한 정보를 출력한다. 각 옵션들은 어떠한 정보들을 출력할지를 제어한다. 이 정보들은 주로 일반적인 프로그래머가 아닌 컴파일 툴을 개발하는 프로그래머들에게 유용한 것이다.
objfile... 은 조사할 오브젝트 파일들에 해당한다. 여기에 아카이브 파일을 지정한 경우에는 objdump 는 포함된 각각의 오브젝트 파일에 대한 정보를 출력한다.
옵션
동일한 역할을 수행하는 긴 형식과 짧은 형식의 옵션은 함께 표기하였다. -l (--line-numbers) 옵션을 제외하고 최소한 하나 이상의 옵션이 지정되어야 한다.
- -a
- --archive-headers
- 만약 objfile 중의 하나가 아카이브 파일인 경우, 아카이브 헤더 정보를
( `ls -l'과 비슷한 형태로) 출력한다. `ar tv' 명령을 통해 알 수 있는 정보를 제외하고, `objdump -a' 명령은 아카이브 멤버인 각각의 오브젝트 파일에 대한 형식을 보여준다. - --adjust-vma=offset
- 정보를 출력할 때, 먼저 모든 섹션 주소에 offset 을 더한다. 이것은 a.out 형식과 같이 섹션 주소를 표현하지 않는 형식에서 어떤 섹션을 특정 주소에 위치시키려는 경우와 같이, 섹션 주소가 심벌 테이블과 일치하지 않는 경우에 유용하게 사용될 수 있다.
- -b bfdname
- --target=bfdname
- 오브젝트 파일에 적용될 오브젝트 코드 형식을 bfdname으로 지정한다. 이 옵션은objdump 가 자동적으로 해당 형식을 인식할 수 있는 경우에는 필요치 않다. 예를 들어,
objdump -b oasys -m vax -h fu.o
명령은 Oasys 컴파일러를 통해 생성된 형식인 Vax 오브젝트 파일로 지정된 (`-m') `fu.o' 파일의 섹션 헤더에서 (`-h') 요약 정보를 출력한다. 적용할 수 있는 형식의 목록을 보려면 `-i' 옵션을 이용하도록 한다.
- -C
- --demangle
- 저수준의 심벌 이름을 사용자가 알아볼 수 있는 형태로 디코딩(demangle)한다. 시스템에서 부여한 앞부분의 언더스코어를 제거하는 일 이외에도, 이것은 C++ 함수의 이름을 읽을 수 있도록 변환해 준다.
- --debugging
- 디버깅 정보를 출력한다. 이것은 파일 내에 저장된 디버깅 정보를 분석하여 C 언어와 비슷한 현태로 출력한다. 오직 몇가지 타입의 디버깅 정보 만이 구현되어 있다.
- -d
- --disassemble
- objfile에서 기계어 부분에 해당하는 어셈블러 명령어를 출력한다. 이 옵션은 오직 명령어들을 저장하도록 되어있는 섹션들만을 디스어셈블링 한다.
- -D
- --disassemble-all
- -d 옵션과 비슷하지만, 명령어가 저장되어 있는 섹션만이 아닌 모든 섹션의 내용을 디스어셈블한다.
- --prefix-addresses
- 디스어셈블 시에, 각 라인의 완전한 주소값을 출력한다. 이것은 예전의 디스어셈블리 형식에 해당한다.
- --disassemble-zeroes
- 일반적으로 디스어셈블된 출력은 제로 블럭(모든 데이터가 0인 블럭)을 건너뛴다. 이 옵션이 사용되면 이러한 제로 블럭들도 다른 데이터와 마찬가지로 디스어셈블한다.
- -EB
- -EL
- --endian={big|little}
- 오브젝트 파일의 엔디안 형식을 지정한다. 이것은 오직 디스어셈블링 시에 적용된다. 이 옵션은 S-records와 같이 엔디안 정보를 갖고 있지 않는 형식의 파일을 디스어셈블할 때 유용하게 사용될 수 있다.
- -f
- --file-headers
- objfile내의 각 파일들의 전체 헤더에서 요약 정보를 출력한다.
- -h
- --section-headers
- --headers
- 오브젝트 파일의 섹션 헤더에서 요약 정보를 출력한다.
- --help
- objdump 에서 사용할 수 있는 옵션의 요약 정보를 출력하고 종료한다.
- -i
- --info
- -b 혹은 -m옵션과 함께 사용할 수 있는 모든 아키텍처와 오브젝트 형식의 목록을 출력한다.
- -j name
- --section=name
- name 섹션의 정보만을 출력한다.
- -l
- --line-numbers
- (디버깅 정보를 사용하여) 오브젝트 코드를 출력할 때 해당 부분의 파일명과 라인 번호를 함께 출력한다. 이 옵션은 -d, -D, -r 옵션들과 함께 사용할 때에만 의미가 있다.
- -m machine
- --architecture=machine
- 오브젝트 파일을 디스어셈블할 때 사용할 아키텍처를 지정한다. 이 옵션은 S-records와 같이 아키텍처 정보를 포함하지 않은 오브젝트 파일을 디스어셈블할 때 유용하게 사용할 수 있다. 사용할 수 있는 아키텍처의 목록은 -i 옵션을 이용하여 알아볼 수 있다.
- -r
- --reloc
- 파일의 재배치 항목들을 출력한다. 이 옵션이 -d 옵션이나 -d 옵션과 함께 사용된 경우에는, 재배치 항목들은 디스어셈블 결과와 섞여서 출력된다.
- -R
- --dynamic-reloc
- 파일의 동적 재배치 항목들을 출력한다. 이 옵션은 오직 공유 라이브러리와 같은 동적 객체에 적용할 경우에만 의미를 가진다.
- -s
- --full-contents
- 요청한 섹션의 완전한 내용을 출력한다.
- -S
- --source
- 가능하다면 디스어셈블링된 결과와 함께 소스 코드를 출력한다. -d 옵션을 사용한 것과 비슷한 효과이다.
- --show-raw-insn
- 디스어셈블할 때 명령어의 심벌과 함께 16진수 값을 출력한다. 이것은 --prefix-addresses 옵션이 사용되지 않은 경우의 기본값이다.
- --no-show-raw-insn
- 디스어셈블할 때, 명령어의 16진수 값을 출력하지 않는다. 이것은 --prefix-addresses 옵션이 사용된 경우의 기본값이다.
- --stabs
- ELF 파일의 .stab, .stab.index, .stab.excl 섹션의 내용을 출력한다. 이것은 ELF 섹션 내에 .stab 디버깅 심벌 테이블 항목이 들어있는 (솔라리스 2.0과 같은) 시스템에서 유용하게 사용될 수 있다. 다른 대부분의 파일 형식들은 디버깅 심벌 테이블 항목들은 --syms output 옵션을 통해 볼 수 있는 링크 심볼들과 뒤섞여 있다.
- --start-address=address
- 지정된 주소의 데이터에서부터 출력을 시작한다. 이 옵션은 -d, -r , -s 옵션의 출력에 영향을 미친다.
- --stop-address=address
- 지정된 주소의 데이터에서 출력을 중지한다. 이 옵션은 -d, -r , -s 옵션의 출력에 영향을 미친다.
- -t
- --syms
- 심벌 테이블. 파일의 심벌 테이블 항목들을 출력한다. 이것은 `nm' 프로그램에서 제공하는 정보와 비슷한 형태로 출력된다.
- -T
- --dynamic-syms
- 다이나믹 심벌 테이블. 파일의 동적 심벌 테이블 항목들을 출력한다. 이 옵션은 공유 라이브러리와 같은 동적 객체에 대해서만 의미를 가진다. 이것은 `nm' 프로그램에서 -D (--dynamic) 옵션을 사용하였을 때 제공하는 정보와 비슷한 형태로 출력된다.
- --version
- objdump 의 버전을 출력하고 종료한다.
- -x
- --all-headers
- 심벌 테이블과 재배치 항목들을 포함한 가능한 모든 헤더 정보를 출력한다. `-x' 옵션을 사용하는 것은 `-a -f -h -r -t' 옵션을 모두 함께 준 것과 동일하다.