CS/모두를 위한 컴퓨터 과학 CS50

[CS50]컴파일,라이브러리, 메모리, 버그, 디버깅

mabb 2023. 2. 24. 17:19
반응형

모두를 위한 컴퓨터 과학(CS50 2019)를 바탕으로 부족한 CS지식을 다져보고자 정리해본다.
=======================================================================

▷컴파일러

인간에게 친숙한 고급언어를 컴퓨터에게 친숙한 기계언어로 변환해주는 컴파일러

사람이 작성한 소스코드를 이진수로 작성된 머신코드로 바꾸어주는 프로그램을 컴파일러라고 한다.
C언어의 컴파일러 : clang
Java언어의 컴파일러: javac 
*컴파일러가 무조건 이진수 기계어로 변환하는 것은 아니다. 컴파일은 언어 번역을 뜻한다. 해당 코드를 다른 언어로 번역하는 것. 보통은 기계어에 가까운 언어로 번역을 한다.

▷C의 컴파일링
컴파일은 네 단계로 이루어진다.
1)전처리 : #include가 코드에 포함된다.
2)컴파일 : c코드를 어셈블리어로 컴파일한다.
3)어셈블 : 어셈블리어를 1과0의 오브젝트 코드로 변환한다.
4)링크 : 포함된 라이브러리들을 하나의 오브젝트 파일로 합친다.

▷라이브러리
기능 사용을 위해 미리 만들어놓은 코드, 함수들의 집합

▷버그
코드에 들어있는 오류를 버그라고 한다. 실제로 벌레가 들어가서 망가진 일에서 유래한다.

▷디버깅
코드에 있는 버그를 식별하고 고치는 과정을 디버깅이라고 한다. 버그를 확인하는 고전적인 방법은 콘솔 창에 print를 하는 것이다. 하지만 이것보다는 IDE에서 제공하는 디버깅 기능을 사용하는 것이 효율적이다. 중지점을 설정하고 중지점으로부터 코드를 한 줄 한 줄 실행하여 문제를 확인할 수 있다.

▷코드의 정확도와 가독성을 높이는 것은 매우 중요한 일이다.따라서 테스트 코드작성과 디버깅은 매우 중요하다.

반응형