c filt(1) - wariua/manpages-ko GitHub Wiki

NAME

c++filt - C++ 및 μžλ°” 심볼 λ””λ§ΉκΈ€ ν•˜κΈ°

SYNOPSIS

c++filt [-_|--strip-underscore]
        [-n|--no-strip-underscore]
        [-p|--no-params]
        [-t|--types]
        [-i|--no-verbose]
        [-s format|--format=format]
        [--help]  [--version]  [symbol...]

DESCRIPTION

C++ 및 μžλ°” μ–Έμ–΄μ—μ„œλŠ” ν•¨μˆ˜ μ˜€λ²„λ‘œλ”©μ΄ κ°€λŠ₯ν•œλ°, 같은 μ΄λ¦„μœΌλ‘œ ν•¨μˆ˜λ₯Ό μ—¬λŸ¬ κ°€μ§€λ‘œ μž‘μ„±ν•΄μ„œ 각 ν•¨μˆ˜κ°€ λ‹€λ₯Έ νƒ€μž…μ˜ λ§€κ°œλ³€μˆ˜λ“€μ„ λ°›κ²Œ ν•  수 μžˆλ‹€λŠ” λœ»μ΄λ‹€. 이런 같은 μ΄λ¦„μ˜ ν•¨μˆ˜λ“€μ„ ꡬ별할 수 μžˆλ„λ‘ ν•˜κΈ° μœ„ν•΄ C++κ³Ό μžλ°”μ—μ„œλŠ” ν•¨μˆ˜ 이름을 각 버전을 μœ μΌν•˜κ²Œ ꡬ별해 μ£ΌλŠ” μ €μˆ˜μ€€ μ–΄μ…ˆλΈ”λŸ¬ μ΄λ¦„μœΌλ‘œ λ³€ν™˜ν•œλ‹€. 이 λ™μž‘μ„ *λ§ΉκΈ€(mangle)*이라고 ν•œλ‹€. c++file [1] ν”„λ‘œκ·Έλž¨μ€ λ°˜λŒ€ λ™μž‘μ„ ν•œλ‹€. 즉 μ €μˆ˜μ€€ 이름을 μ‚¬μš©μž μˆ˜μ€€ μ΄λ¦„μœΌλ‘œ 해독(λ””λ§ΉκΈ€(demangle))ν•΄μ„œ μ‚¬μš©μžκ°€ 읽을 수 있게 λ§Œλ“€μ–΄ μ€€λ‹€.

μž…λ ₯μ—μ„œ (문자, 숫자, 밑쀄, λ‹¬λŸ¬, λ§ˆμΉ¨ν‘œλ‘œ 이뀄진) λͺ¨λ“  단어가 λ§ΉκΈ€ 된 이름 후보듀이닀. 이름이 C++ μ΄λ¦„μœΌλ‘œ ν•΄λ…λ˜λ©΄ κ·Έ C++ 이름이 좜λ ₯μ—μ„œ μ €μˆ˜μ€€ 이름 λŒ€μ‹  λ‚˜μ˜€κ³ , μ•„λ‹ˆλ©΄ μ›λž˜ 단어가 좜λ ₯λœλ‹€. κ·Έλž˜μ„œ λ§ΉκΈ€ 된 이름듀을 담은 μ–΄μ…ˆλΈ”λŸ¬ μ†ŒμŠ€ 파일 전체λ₯Ό c++filt에 ν†΅κ³Όμ‹œν‚€λ©΄ λ””λ§ΉκΈ€ 된 이름을 담은 λ™μΌν•œ μ†ŒμŠ€ νŒŒμΌμ„ λ³Ό 수 μžˆλ‹€.

λͺ…λ Ήν–‰μ—μ„œ 심볼 이름을 c++filt에 μ€˜μ„œ κ°œλ³„ 심볼을 해독할 μˆ˜λ„ μžˆλ‹€.

c++filt <symbol>

symbol μΈμžκ°€ μ£Όμ–΄μ§€μ§€ μ•ŠμœΌλ©΄ c++filtλŠ” ν‘œμ€€ μž…λ ₯μ—μ„œ 심볼 이름을 읽어 듀인닀. 그리고 λͺ¨λ“  κ²°κ³Όλ₯Ό ν‘œμ€€ 좜λ ₯으둜 μ°λŠ”λ‹€. λͺ…λ Ήν–‰μ—μ„œ 이름을 μ½λŠ” 것과 ν‘œμ€€ μž…λ ₯μ—μ„œ 이름을 μ½λŠ” κ²ƒμ˜ μ°¨μ΄λŠ” λͺ…λ Ήν–‰ μΈμžκ°€ λ”± λ§ΉκΈ€ 된 이름일 것이라고 κΈ°λŒ€ν•˜μ—¬ μ£Όλ³€ ν…μŠ€νŠΈμ™€ κ΅¬λ³„ν•˜κΈ° μœ„ν•œ 검사λ₯Ό μˆ˜ν–‰ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 점이닀. κ·Έλž˜μ„œ λ‹€μŒμ€ 잘 λ™μž‘ν•΄μ„œ 이름이 "f()"으둜 λ””λ§ΉκΈ€ λ˜λŠ” 반면,

c++filt -n -Z1fv

λ‹€μŒμ€ μ œλŒ€λ‘œ λ˜μ§€ μ•ŠλŠ”λ‹€. (λ§ΉκΈ€ 된 이름 끝에 μΆ”κ°€λ‘œ λΆ™μ–΄ μžˆλŠ” μ‰Όν‘œ λ•Œλ¬Έμ— μœ νš¨ν•˜μ§€ μ•Šμ€ 이름이 λœλ‹€.)

c++filt -n -Z1fv,

ν•˜μ§€λ§Œ λ‹€μŒ λͺ…령은 잘 λ™μž‘ν•˜κ²Œ λœλ‹€.

echo _Z1fv, | c++filt -n

"f(),"κ°€ ν‘œμ‹œλœλ‹€. 즉 λ””λ§ΉκΈ€ 된 이름 λ‹€μŒμ— λ§ˆμ§€λ§‰μ˜ μ‰Όν‘œκ°€ λ”°λΌμ˜¨λ‹€. 이런 λ™μž‘ 방식이 μžˆλŠ” μ΄μœ λŠ” ν‘œμ€€ μž…λ ₯μ—μ„œ 이름을 읽을 λ•ŒλŠ” κ·Έ λ‚΄μš©μ΄ μ–΄μ…ˆλΈ”λŸ¬ μ†ŒμŠ€ 파일의 일뢀일 μˆ˜λ„ μžˆλ‹€κ³  μ˜ˆμƒν•  수 있으며, κ·Έ 경우 λ§ΉκΈ€ 된 이름 뒀에 이름과 μƒκ΄€μ—†λŠ” λ¬Έμžκ°€ μΆ”κ°€λ‘œ μžˆμ„ μˆ˜λ„ 있기 λ•Œλ¬Έμ΄λ‹€. 예:

    .type   _Z1fv, @function

OPTIONS

-_
--strip-underscore
μ–΄λ–€ μ‹œμŠ€ν…œμ—μ„œλŠ” C μ»΄νŒŒμΌλŸ¬μ™€ C++ 컴파일러 λͺ¨λ‘ λͺ¨λ“  이름 μ•žμ— 밑쀄을 λ„£λŠ”λ‹€. 예λ₯Ό λ“€μ–΄ C 이름 "foo"κ°€ μ €μˆ˜μ€€ 이름 "_foo"κ°€ λœλ‹€. 이 μ˜΅μ…˜μ€ κ·Έ μ•žμͺ½ 밑쀄을 μ—†μ• κ²Œ ν•œλ‹€. μ§€μ •ν•˜μ§€ μ•Šμ•˜μ„ λ•Œ c++filtκ°€ κ·Έ 밑쀄을 μ—†μ• λŠ”μ§€ μ—¬λΆ€λŠ” λŒ€μƒμ— 따라 λ‹€λ₯΄λ‹€.
-n
--no-strip-underscore
μ•žμͺ½ 밑쀄을 μ—†μ• μ§€ μ•ŠλŠ”λ‹€.
-p
--no-params
ν•¨μˆ˜ 이름을 λ””λ§ΉκΈ€ ν•  λ•Œ ν•¨μˆ˜ λ§€κ°œλ³€μˆ˜ νƒ€μž…μ„ ν‘œμ‹œν•˜μ§€ μ•ŠλŠ”λ‹€.
-t
--types
ν•¨μˆ˜ 이름뿐 μ•„λ‹ˆλΌ νƒ€μž…κΉŒμ§€ λ””λ§ΉκΈ€ ν•˜λ €κ³  μ‹œλ„ν•œλ‹€. 이 λ™μž‘μ€ 기본적으둜 κΊΌμ Έ μžˆλŠ”λ°, 보톡은 컴파일러 λ‚΄λΆ€μ μœΌλ‘œλ§Œ λ§ΉκΈ€ 된 νƒ€μž…μ„ μ΄μš©ν•˜λŠ” 데닀가 λ§ΉκΈ€ μ•ˆ ν•œ 이름과 ν˜Όλ™ν•  수 있기 λ•Œλ¬Έμ΄λ‹€. 예λ₯Ό λ“€μ–΄ "a"λΌλŠ” ν•¨μˆ˜λ₯Ό λ§ΉκΈ€ 된 νƒ€μž…μœΌλ‘œ ν•΄μ„ν•˜λ©΄ "signed char"둜 λ””λ§ΉκΈ€ λœλ‹€.
-i
--no-verbose
λ””λ§ΉκΈ€ 된 좜λ ₯에 κ΅¬ν˜„ 상세 정보λ₯Ό ν¬ν•¨μ‹œν‚€μ§€ μ•ŠλŠ”λ‹€.
-s format
--format=format

c++filtλŠ” μ—¬λŸ¬ μ»΄νŒŒμΌλŸ¬λ“€μ—μ„œ μ“°λŠ” λ‹€μ–‘ν•œ λ§ΉκΈ€ 방식을 해독할 수 μžˆλ‹€. 이 μ˜΅μ…˜ 인자둜 μ‚¬μš© 방식을 μ„ νƒν•œλ‹€.

"auto"
μ‹€ν–‰ νŒŒμΌμ— λ”°λΌμ„œ μžλ™ 선택 (κΈ°λ³Έ 방법)
"gnu"
GNU C++ 컴파일러(g++)μ—μ„œ μ“°λŠ” 방식
"lucid"
Lucid 컴파일러(lcc)μ—μ„œ μ“°λŠ” 방식
"arm"
C++ Annotated Reference Manualμ—μ„œ λͺ…μ„Έν•œ 방식
"hp"
HP 컴파일러(aCC)μ—μ„œ μ“°λŠ” 방식
"edg"
EDG μ»΄νŒŒμΌλŸ¬μ—μ„œ μ“°λŠ” 방식
"gnu-v3"
GNU C++ 컴파일러(g++) V3 ABIμ—μ„œ μ“°λŠ” 방식
"java"
GNU μžλ°” 컴파일러(gcj)μ—μ„œ μ“°λŠ” 방식
"gnat"
GNU Ada 컴파일러(GNAT)μ—μ„œ μ“°λŠ” 방식
--help
c++filt μ˜΅μ…˜ μš”μ•½ μ„€λͺ…을 찍고 μ’…λ£Œν•œλ‹€.
--version
c++filt의 버전 번호λ₯Ό 찍고 μ’…λ£Œν•œλ‹€.
@file

fileμ—μ„œ λͺ…λ Ήν–‰ μ˜΅μ…˜λ“€μ„ μ½λŠ”λ‹€. 읽어 듀인 μ˜΅μ…˜λ“€μ΄ μ›λž˜ @file μ˜΅μ…˜ μžλ¦¬μ— λ“€μ–΄κ°„λ‹€. file이 μ‘΄μž¬ν•˜μ§€ μ•Šκ±°λ‚˜ 읽을 수 μ—†λŠ” κ²½μš°μ—λŠ” 이 μ˜΅μ…˜μ„ μ œκ±°ν•˜μ§€ μ•Šκ³  문자 κ·ΈλŒ€λ‘œ λ‹€λ£¨κ²Œ λœλ‹€.

file λ‚΄μ˜ μ˜΅μ…˜λ“€μ€ 곡백으둜 κ΅¬λΆ„ν•œλ‹€. μ˜΅μ…˜μ— 곡백 문자λ₯Ό ν¬ν•¨μ‹œν‚€λ €λ©΄ μ˜΅μ…˜ 전체λ₯Ό μž‘μ€λ”°μ˜΄ν‘œλ‚˜ ν°λ”°μ˜΄ν‘œλ‘œ 감싸면 λœλ‹€. 문자 μ•žμ— λ°±μŠ¬λž˜μ‹œλ₯Ό 뢙이면 (λ°±μŠ¬λž˜μ‹œλ₯Ό ν¬ν•¨ν•œ) μ–΄λ–€ λ¬Έμžλ“  집어넣을 수 μžˆλ‹€. file μžμ²΄μ— λ‹€μ‹œ @file μ˜΅μ…˜μ΄ μžˆμ„ 수 μžˆλ‹€. 그러면 μž¬κ·€μ μœΌλ‘œ μ²˜λ¦¬κ°€ 이뀄진닀.

FOOTNOTES

  1. MS-DOSμ—μ„œλŠ” 파일 이름에 "+" 문자λ₯Ό ν—ˆμš©ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ MS-DOSμ—μ„œ 이 ν”„λ‘œκ·Έλž¨μ˜ 이름은 CXXFILT이닀.

SEE ALSO

info binutils ν•­λͺ©.

COPYRIGHT

Copyright (c) 1991-2018 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".


2018-09-12

binutils-2.30-system

⚠️ **GitHub.com Fallback** ⚠️