꾸준한 기록

Swift Demangle 본문

Swift

Swift Demangle

Doo혀니 2024. 9. 20. 17:45

다이나믹 라이브러리에서 외부로 export 하는 심볼을 확인할 때 `swift-demangle` 이라는 옵션을 같이 사용한다.

만일 `swift-demangle` 옵션을 사용하지 않으면, 심볼이 mangle되어서 심볼이 어떤 타입을 나타내는지 읽기 어렵다. 

아래에 mangle된 심볼 모습을 보면 알아보기 힘든 형태로 되어있다.

 

동일한 것을 `swift-demangle` 옵션을 붙여서 심볼을 demangle 시키면 훨씬 보기 쉬운 것을 확인할 수 있다.

UserDTO라는 것을 알가보기가 훨씬 더 쉽다.

 

그렇다면 왜 mangle 되는 것일까?

symbol이 어떤 타입인지를 symbol의 이름 안에 같이 담는 것이다. 

이를 통해서 Swift는 런타임에 오버로딩된 함수들을 구별할 수 있다. 또한 다이나믹 링커가 정확하게 타입을 찾아서 링크하기 위해서 mangle된 이름을 사용한다. 

그렇기에 export된 심볼을 확인할 때도 mangle된 네이밍이 출력된다.

 

Demangle

Demangle이란 mangle된 이름을 사람이 읽기 쉬운 형태로 바꾸는 것을 말한다.

`xcrun swift-demangle`을 쓰면 symbol을 demangle해서 확인할 수 있다.

 

 

'Swift' 카테고리의 다른 글

Swift Concurrency 사용하면서 실수하기 쉬운 부분  (0) 2025.05.13
Swift 6.1 업데이트  (0) 2025.05.10
정렬 알고리즘  (0) 2024.09.14
Swift에서 Sort()  (0) 2024.09.14
strong, weak, unowned  (0) 2024.09.10