21. 11. 15 LLDB

Allie·2021년 11월 24일
0

TIL

목록 보기
14/14

LLDB

LLVM front-end debugger 디버거 도구다..!@

우리가 작성한 언어를 LLVM 프로토콜을 준수하는 과정에서 생기는 어쩌구,,

디버깅이란?

컴퓨터 프로그램 개발 단계 중에 발생하는 오류나 버그를 찾아내고 그 원인을 밝히고 수정하는 작업과정

Compile

언어 → 언어로 인코딩하는 과정

원시코드(소스코드) → 목적코드

Build

소스코드 파일을 실행가능한 소프트웨어 산출물로 만드는 일련의 과정을 말한다.

이거 한 다음에 시뮬레이터에서 실행해주는 것.

전처리preprocess → 컴파일compile → 링크link (소스코드 파일을 연관관계에 따라 이어줌, linker fail 어쩌구 오류는 이과정과 관련된 것) → 빌드

컴파일 시점에 따른 프로그래밍 언어의 분류

스위프트는 빌드할 때 컴파일이 이루어진다~ 빌드시점에 실행가능한 형태로 모두 컴파일되어 나오는 언어를 컴파일언어라고 한다.

사용자가 코드를 실행했을 때 즉석으로 번역하는 언어도 있음 → 인터프리터 언어

  • 컴파일 언어
    • C, C++, Go...
  • 바이트코드 언어
    • Java, C#...
  • 인터프리터 언어
    • BASIC, JavaScript, Python, Ruby...

해리포터 책을 원서로 사서 읽으면 인터프리터 언어 방식.

번역본을 사면 컴파일 언어 방식.

번역본을 읽는게 시간이 훨씬 빠르지만, 오역과 오류(버그)가 있을 수 있음.

실행속도는 빠르지만, 앱스토어에 업데이트 전까지 버그를 고칠 수 없음.. 버그가 터쳤을 때 빨리 대응하기가 어려움.

인터프리터 언어는 공개된 장소에 소스코드가 올라와있고 그걸 사용자(브라우저)가 소스코드를 실행하는 형태라서 빠르게 대응을 할 수 있다. 웹페이지는 업데이트 같은 공지가 없었던 거 같음. 개발자가 실수했어도 3초만에 수정 가능ㅎ 배포가 자유로운 장점이 있지만, 속도는 좀 느림 (실시간 번역을 해야해서). 빠르게 무거운 작업을 하기에 적합하지 않다.

바이트코드 언어 = 두개의 장점을 갖고있다? 두개의 단점도 갖고있다.. 이도저도 아니다..? 만국공용어(중간언어)를 지정해서 그 언어로 컴파일해서 배포한다 → 각국에서 해당언어로 번역한다 → 뭐하는 짓임?

컴파일에서 중간언어로 배포를 하고 중간언어를 시스템언어로 바꿀 수 있는 친구만있으면 어느 시스텡ㅁ에서든지 실행가능.. 중간 언어(자바)를 바꿀 수 있는게 JVM 이란 애다.. 배포할때도 다시 빌드해서 배포해야하는 단점..

컴파일 언어들은 빌드할 때 컴파일을 하면 이미 번역이 되어서 가야하기 때문에 어느 환경에서 실행될 지 타겟팅을 다 해야한다. 아이폰용 빌드, 맥용 빌드, 윈도우용 빌드 등등 다 따로 나가야 함 (게임 다운받을 때 맥용, 윈도우용 어쩌구 나와있는 것도 이런 이유 때문임)

왜 Swift언어를 사용할까?

컴파일 언어는 시스템에 최적화 될 수 있기 때문에 에너지 절약 측면에서도 좋고, 게임 등 범용적으로 올라갈 수 있어야하기 때문에 컴파일 언어를 쓴다.

profile
게발자🦀 되는 중.. 궁김하다.. 궁김해..

0개의 댓글