C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[113] [팁] TDUMP.EXE Option 정리
박지훈.임프 [cbuilder] 8435 읽음    2001-07-26 14:54
이 팁은 담비님(천리안 FREKBS)님이 99년 1월 4일에 천리안 프로그래머포럼에 올리신 것입니다.
담비님으로부터는 전제하여 올리는 데 대해 허락을 받았습니다.
좋은 정보를 공유하도록 허락해주신 담비님께 감사드립니다.

-----------------------------------------------------------------------
안녕하세요! 담비입니다.

본 문서는 TDUMP.EXE의 Option을 정리한 내용입니다. 문서의 내용중 거론된
TDUMP.TXT는 따로 올리도록 하겠습니다.

본 문서는 C++ Builder와 함께 제공되어지는 도움말 파일을 기초로 작성되었으며
내용상의 오류 혹은 추가 및 변경되어져야 할 사항을 발견하시면 메일 주시면
감사하겠습니다. 보내주신 내용은 검토 후 반영하여 다시 올리도록 하겠습니다.

  frekbs@chollian.net
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
TDUMP.EXE는 파일의 구조를 보여주는 파일 덤프를 생산한다. TDUMP는 파일을 구조적
인 부분으로 쪼개고 출력형식을 결정하기 위하여 파일의 확장자를 사용한다. TDUMP는
.EXE, .OBJ, .LIB등 많은 파일 포맷들을 인식한다. 만일 TDUMP가 확장자를 이해하지
못한다면 파일의 16진 덤프를 생산한다. 프로그램을 새작할 때 TDUMP의 명령라인을
사용하여 출력 형식을 조절할수 있다. 파일의 내부구조를 살짝 들여다 볼수 있는
TDUMP의 능력은 단지 파일의 목차를 보여주지는 않으나 파일이 어떻게 생성되어졌는
지를 보여준다. 게다가, 확장자와 일치하는 화일의 구조를 확인하고, 또한 파일의
완전함을 테스트하는데 사용할수있다.

주) 파일의 목차라는 말은 파일을 생성한 코드 자체를 의미하는것이다. 다시말해서
     디스어셈블하지는 않는다는 말이다.

TDUMP의 커맨드라인 명령 형식은 다음과 같다.

        TDUMP [<options>] <Inputfile> [<Listfile>] [<options>]

<Inputfile>은 구조를 표시하거나 덤프하기 원하는 파일의 이름이다.
<Listfile>은 선택적으로 지시할 수 있는 출력 파일의 이름이다.( DOS의 리디렉션(>)
           을 사용할 수 있다.)
<options>은 TDUMP명령라인 옵션들을 지시한다.

Note: TDUMP의 사용에 관한 자세한 내용은 TDUMP.TXT를 참조한다.

/*************************************************************************/
TDUMP command-line options

TDUMP에는 몇몇 선택적인 스위치들을 사용할 수 있으며 모두 스위치나 슬래시로
시작한다. 다음 두가지 예제는 같은것이다.

        TDUMP -el -v demo.exe
        TDUMP /el /v demo.exe

-a 와 -a7 옵션
~~~~~~~~~~~~~~
TDUMP는 파일 형식에 따라 출력형식을 자동으로 조절한다. -a 또는 -a7 옵션을
포함하여 파일을 강제로 ASCII 형식으로 표시되게 할수도있다.
───┬───────────────────────────────────
  -a   │오프셋과 표시가 가능한 ASCII 문자들을 사용하여 ASCII 파일을 생성하여
       │표시한다. 표시가 불가능한 문자(콘트롤문자같은)는 점(.)으로 나타난다.
───┼───────────────────────────────────
  -a7  │high-ASCII와 대응하는 low-ASCII문자들로 변환한다. 이것은 파일이
       │플래그와 같은 high-ASCII 덤핑 셋일경우 유용하다.(WordStar의 파일이
       │그렇다.)
───┴───────────────────────────────────

-b# 옵션
~~~~~~~~
-b# 옵션은 명시된 오프셋에서부터 시작하여 정보를 보여줄수 있도록 해다.
만일 MYFILE의 오프셋 100에서부터 시작하여 덤프하길 원한다면 다음과 같이
사용할 수 있다.
        TDUMP -b100 MYFILE

-d 옵션
~~~~~~~
-d 옵션은 .OBJ 파일에서 Borland 32-bit 디버그 정보를 차아 덤프하도록 TDUMP에게
지시한다. 만일 이 옵션을 지시하지 않으면 TDUMP는 파일에 있는 그대로의 가공되지
않은 데이타만을 보여준다.

-e, -el, -er, -ex 옵션
~~~~~~~~~~~~~~~~~~~~~~
4개의 옵션들 모두 강제로 TDUMP가 파일의 출력형식을 실행파일(.EXE)형식으로
보여주도록 지시한다. .EXE파일은 파일을 메모리로 로드할때 운영체제에 의해 사용
되어지는 파일이 가지고 있는 정보의 구성내용을 표시한다. 만일 심볼릭 디버깅 정보
가 주어진다면(Turbo Debugger or Microsoft CodeView), TDUMP는 그것을 보여준다.
TDUMP는 DOS의 실행파일을, New style executable파일(Microsoft Windows and OS/2
.EXEs and DLLs ),Linear Executable 파일, 그리고 Windows NT와 Windows 95에 의해
사용되어지는 Portable Executable (PE)파일의 정보를 보여준다.
──┬────────────────────────────────────
-el │행번의 표시를 하지 않는다.
──┼────────────────────────────────────
-er │재배치 테이블의 표시를 하지 않는다.
──┼────────────────────────────────────
-ex │New style executable 정보를 표시하지 않는다. 이것은 TDUMP가 DOS "stub"
     │프로그램을 위한 정보만을 표시함을 의미한다.
──┴────────────────────────────────────

-h 옵션
~~~~~~~
-h 옵션은  16진(hex) 포맷으로 파일을 덤프하여 보여준다. hex 포맷은 오프셋 숫자
를 가지는 컬럼과 16진 값을 가지는 ASCII와 대응하는 값을 표시하는 16개의 컴럼들
로 구성된다.(ASCII 문자로 표시할 수 없는 경우에는 점(.)이 표시된다.)
만일 TDUMP가 입력된 파일의 확장자를 인식하지 못한다면 16진 포맷으로 표시한다.
(다른 포맷을 구별하는 옵션이 사용되지 않는한.)

-l 과 -li 옵션
~~~~~~~~~~~~~~
──┬────────────────────────────────────
-l  │옵션은 라이브러리(.LIB) 파일 포맷으로 파일을 출력한다. 라이브러리 파일은
     │오브젝트 파일들의 집합니다.(오브젝트 파일에 관한 자세한 내용은 -o 옵션을
     │본다.) 라이브러리 파일 덤프는 오브젝트 파일의 레코드와 오브젝트 파일
     │라이브러리 지시정보를 보여준다.
──┼────────────────────────────────────
-li │임포트 라이브러리를 덤프할 경우 "impdef" 레코드들의 간략한 형식을 보여줄
     │것을 TDUMP에게 지시한다. 또한 다음과 같은 형식을 사용하여 검색문자를
     │지시할 수도 있다.
     │ -li=<string>
     │예를 들어 다음과 같은 명령은
     │ TDUMP -li=codeptr import.lib
     │다음의 결과를 보여준다.
     │ Impdef:(ord) KERNAL.0336=ISBADCODEPTR
     │이 출력은 순서에 의해 익스포트된 함수를 보여주며 순서값은 336(10진값)이다
     │추가로, 출력은 모듈과 함수의 이름을 보여준다.
     │만일 다음과 같은 명령을 하였다면
     │ TDUMP -li=walk import32.lib
     │TDUMP는 다음을 보여준다.
     │ Impdef:(name) KERNEL32.????=HEAPWALK
     │이것은 이름에 의해 익스포트된 함수를 보여준다.
──┴────────────────────────────────────

-m 옵션
~~~~~~~
-m 옵션은 "mangled" 포맷에서 Turbo Debugger symbolic information과 실행파일,
오브젝트 파일에서 C++ 이름들을 발견한 경우 그대로 남겨둔다. 이 옵션은 C++
컴파일러가 함수의 이름과 인수들을 어떻게 "mangles"하여 결정하는지를 알아보는데
도움을 준다.

-o, -oc, -ox, -oi 옵션
~~~~~~~~~~~~~~~~~~~~~~
──┬────────────────────────────────────
-o  │옵션은 오브젝트 파일(.OBJ) 포맷으로 파일을 출력한다. 오브젝트 파일은
     │링커에게 데이타와 명령을 전달할 명령 레코드들에 대한 설명과 .EXE 파일을
     │어떻게 생성할지를 지시하는 내용을 보여준다. 출력형식은 각 레코드들과
     │레코드 단위의 결합된 데이타들을 보여준다.
──┼────────────────────────────────────
-oc │각 레코드를 만날때마다 TDUMP가 cyclic redundancy test (CRC)를 체크하도록
     │한다. 잘못된 CRC가 발생했을 때만 출력을 하는 -o 옵션과는 다르다.
     │(TDUMP CRC 값은 레코드의 CRC byte와는 다르다.)
──┴─┬──────────────────────────────────
-ox<id> │오브젝트 모듈 덤프로부터 레코드 형식이 나타나는것을 제외한다.
         │출력되어지지 않도록 레코드이름과 함께 <id>를 재배치한다. 예를 들어
         │ TDUMP -oxPUBDEF MYMODULE.OBJ
         │위의 명령은 PUBDEF 레코드를 제외한 MYMODULE.OBJ의 오브젝트 모듈을
         │표시한다.
────┼──────────────────────────────────
-oi<id> │오브젝트 모듈 덤프에 오직 지시된 레코드 형식만을 포함한다. 출력되어지
         │는 레코드의 이름으로 <id>를 재배치한다. 예를 들어
         │ TDUMP -oiPUBDEF MYMODULE.OBJ
         │위의 명령은 오직 PUBDEF 레코드를 표시하는 MYMODULE.OBJ의 오브젝트
         │모듈을 표시한다.
────┴──────────────────────────────────

-ox와 -oi 옵션은 링크를 하는동안 발생하는 에러를 찾는데 유용하다. PUBDEF와
EXTDEF 심볼의 경우와 철자를 실험함으로서 링크시의 많은 문제들을 해결할 수
있다. 예를 들어 만일 링커로부터 "unresolved external"이라는 메세지를 받는다면,
에러가있는 모듈에 발생한 외부정의를 표시하기 위하여 TDUMP -oiEXTDEF를 사용한다.
그리고나서, 일치하지 않는 링커의 퍼블릭 심볼을 가지는 모듈에 TDUMP -oiPUBDEF을
사용한다.
-oi 스위치의 다른 사용법은 개개의 모듈에 생성되어진 세그먼트들의 크기와 이름을
체크하기 위한것이다. 예를 들어,
  TDUMP -oiSEGDEF MYMODULE.OBJ
위의 명령은 MYMODULE에 있는 모든 세그먼트들의 이름과 속성 크기들을 표시한다.

Note: -oi와 -ox 옵션을 위해 사용할 수 있는 레코드 형식들의 리스트를 얻고자
       한다면 명령라인에 -oi? 과 -ox? 옵션을 사용한다.

-R 옵션
~~~~~~~
-R 옵션은 TDUMP가 32-bit PE (Win32) 포맷 이미지로부터 재배치 테이블을 덤프하게
한다. 기본적으로 이 덤프는 제외된다.

-v 옵션
~~~~~~~
-v 옵션은 상세한 표시에 사용되어진다. 만일 .OBJ 또는 .LIB 파일들과 함께 사용된
다면 TDUMP는 레코드들에 관한 코멘드가 없이 레코드의 내용을 16진값으로 덤프한다.
만일 Turbo Debugger symbol table에 TDUMP를 사용한다면, 그들이 나타나는 순서대로
의 정보테이블을 표시한다. TDUMP는 각각의 모듈에 기초한 좀더 의미있는 표시를
보여주기 위하여 몇몇 테이블들의 정보를 결합하지는 않는다.



+ -

관련 글 리스트
113 [팁] TDUMP.EXE Option 정리 박지훈.임프 8435 2001/07/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.