인프런 커뮤니티 질문&답변

dbtjdtn325님의 프로필 이미지

작성한 질문수

C개발자를 위한 최소한의 C++

Name mangling

쓸데없지만 질문드리고싶습니다

해결된 질문

24.08.15 03:34 작성

·

59

·

수정됨

0

안녕하세요. 항상 양질의 강의 감사합니다.

link 오류시, 컴파일러가 맹글링 해놓은 함수의 진짜 이름이 출력되고, 이러한 오류를 dll 을 사용함에 있어서 자주 볼 수 있다고 말씀하셨는데 리눅스에서 라이브러리든 실행파일이든 용량을 조금이나마 줄이기위해 stip??? 명령어를 사용해 디버깅 심볼을 없앨 수 있었던 것으로 기억합니다.

근데, 디버깅 심볼에는 변수, 함수이름, 소스코드 줄 번호등 다양한 정보가 들어가 있다고 배웠었는데, 해당 명령어로 디버깅 심볼을 없애버린 라이브러리 파일을 사용하여 만든 소스파일을 빌드하는 경우에서, 링크 오류가 나게되면 어떠한 현상이 이뤄지는지 궁금합니다

답변 1

1

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

2024. 08. 15. 15:24

심볼 파일은 Debug, Release 빌드 모두에 대해 생성할 수 있습니다. 그리고 그 심볼 파일 속에 함수나 변수 이름이 구체적으로 들어 있습니다. 윈도우 환경에서 이 심볼 파일은 .pdb 파일입니다. 이 심볼이 없으면 런타임 디버깅 시 함수 이름이 16진수로 표시됩니다. 이는 라이브러리 자체 빌드와 상관이 없습니다. 그러나 보통 빌드 시 심볼파일을 생성하도록 설정하는 것이 기본 옵션입니다. 아무튼 생각하시는 링크 오류와 관련이 없다고 봐야 하겠습니다. 참고하시기 바랍니다. 😄