수업내용
Low-Level Debugging [LLDB]
디버깅이란?
시스템의 오류랑 벌레잡기
Compile? Build?
Build: 소스코드 파일을 실행가능한 소프트웨어 산출물로 만드는 일련의 과정
아래와 같은 일련의 과정을 거쳐서 빌드를 한다.
Compile:
- Compiler가 우리가 작성한 코드를 컴퓨터가 읽을 수 있는 언어로 변환 해 주는 작업.
- 원시코드[Swift]
Link: Module사이에 서로 연결되는 지점을 연결시켜주는 작업을 Linker가 한다.
프로그래밍 언어의 분류
기계어 번역 방식에 따른
- 컴파일 언어
- C, C++, Go..
- 통번역된 컴퓨터 언어 [바로 실행 가능]
- 매우매우 성능이 좋고 빠르다.
- 운영체제에 따라 다른 컴파일 언어를 가지고 있다.
- 해당 프로그램에 버그가 있는 경우 전반적인 패치 후 재배포를 해줘야 한다.
- 바이트코드 언어
- Java, C#
- 컴파일을 거치다 중간 언어로 한 번 컴파일하게 된다. 그리고 이것을 배포하면 컴퓨터에서는 해당 중간 언어를 컴파일 언어로 번역을 하는 가상머신을 설치하게 된다.
- 장점: 이식성이 좋다. 한 번 배포로 시스템에서 사용할 수 있게 된다.
- 인터프리터 언어 [실행시 컴파일을 안하고 즉석에서 번역이 가능한 언어]
- BASIC, JavaScript, Python, Ruby
- 웹사이트에서 쓰기 간편한 언어
- 느리다는 단점이 존재한다.
GCC
GNU, Compiler, Collection
LLVM
compiler 패키지.
프로그래머가 원하는 언어로 작업을 한 뒤 번역하고자 하는 아키텍처에 해당되는 컴퓨터 언어로 변환이 가능해졌다.
LLDB
LLVM의 앱을 디버깅하는 툴