Go to the first, previous, next, last section, table of contents.


c++filt


c++filt [ -_ | --strip-underscores ]
        [ -j | --java ]
	[ -n | --no-strip-underscores ]
        [ -s format | --format=format ]
        [ --help ]  [ --version ]  [ symbol... ]

The C++ and Java languages provides function overloading, which means that you can write many functions with the same name (providing each takes parameters of different types). All C++ and Java function names are encoded into a low-level assembly label (this process is known as mangling). The c++filt (1) program does the inverse mapping: it decodes (demangles) low-level names into user-level names so that the linker can keep these overloaded functions from clashing.

C++과 Java는 (다른 종류의 파라미터를 받는다면) 같은 이름을 한 여러 함수를 사용할 수 있는 함수 오버로딩을 지원한다. 모든 C++과 Java 함수 이름은 저수준 어셈블리 이름으로 변경되야 한다. (이 과정을 맹글링(mangling)이라 한다.) (역주; 맹글링은 새로운 언어가 생겼을 때 (새로 만들지 않고) 기존의 링커와 같은 컴파일 관련 도구들을 별로 수정하지 않고도 사용할 수 있게 한다.) c++filt (1)은 역으로 변환을 한다. 즉 저수준 이름을 사람이 알아볼 수 있는 이름으로 변환(디맹글링(demangling))하여 링커가 이 오버로딩된 함수를 다룰 수 있게 한다.

Every alphanumeric word (consisting of letters, digits, underscores, dollars, or periods) seen in the input is a potential label. If the label decodes into a C++ name, the C++ name replaces the low-level name in the output.

You can use c++filt to decipher individual symbols:

입력에서 알파벳과 숫자로 이루어진 (정확히는, 문자, 숫자, `_', `$', `.'로 이루어진) 모든 단어는 이렇게 변환된 이름일 수 있다. 저수준 이름이 C++ 이름으로 변환되면 출력에서 C++ 이름이 대신 사용된다.

다음과 같이 c++filt는 심볼 이름을 변환한다.

c++filt symbol

If no symbol arguments are given, c++filt reads symbol names from the standard input and writes the demangled names to the standard output. All results are printed on the standard output.
어떤 symbol 아규먼트도 사용하지 않으면, 표준입력으로 심볼 이름을 읽어서 변환된 이름을 표준출력으로 출력한다. 모든 결과는 표준출력에 출력된다.

-_
--strip-underscores
On some systems, both the C and C++ compilers put an underscore in front of every name. For example, the C name foo gets the low-level name _foo. This option removes the initial underscore. Whether c++filt removes the underscore by default is target dependent.
몇몇 시스템의 C, C++ 컴파일러는 각 이름 앞에 `_'을 붙인다. 예를 들어 C에서 foo라는 이름이 저수준으로는 _foo가 된다. 이 옵션은 앞의 `_'을 제거한다. c++filt가 기본으로 `_'을 제거하는지는 타겟에 따라 다르다.
-j
--java
Prints demangled names using Java syntax. The default is to use C++ syntax.
Java 문법을 사용하여 변환된 이름을 출력한다. 기본은 C++ 문법을 사용하는 것이다.
-n
--no-strip-underscores
Do not remove the initial underscore.
앞의 `_'을 제거하지 않는다.
-s format
--format=format
GNU nm can decode three different methods of mangling, used by different C++ compilers. The argument to this option selects which method it uses:
GNU c++flit은 다른 C++ 컴파일러가 사용하는 세종류의 맹글링 방법을 변환할 수 있다. 이 옵션의 아규먼트는 사용할 디맹글링 방법을 선택한다.
gnu
the one used by the GNU compiler (the default method)
GNU 컴파일러가 사용하는 방법 (기본값)
lucid
the one used by the Lucid compiler
Lucid 컴파일러가 사용하는 방법
arm
the one specified by the C++ Annotated Reference Manual
C++ Annotated Reference Manual에 설명된 방법
hp
the one used by the HP compiler
HP 컴파일러가 사용하는 방법
edg
the one used by the EDG compiler
EDG 컴파일러가 사용하는 방법
gnu-new-abi
the one used by the GNU compiler with the new ABI.
새로운 ABI를 가진 GNU 컴파일러가 사용하는 방법
--help
Print a summary of the options to c++filt and exit.
c++filt의 옵션을 간단히 설명하고 종료한다.
--version
Print the version number of c++filt and exit.
c++filt의 버전을 출력하고 종료한다.

Warning: c++filt is a new utility, and the details of its user interface are subject to change in future releases. In particular, a command-line option may be required in the the future to decode a name passed as an argument on the command line; in other words,

주의! c++filt는 새로 만들어진 도구로, 앞으로 세부적인 내용이 변하기 쉽다. 특별히 앞으로 명령행에 주어진 아규먼트를 변환하기 위해서 옵션이 필요할 수도 있다. 즉,

c++filt symbol

may in a future release become
이 아래와 같이 될 수도 있다.

c++filt option symbol


Go to the first, previous, next, last section, table of contents.