Development language

Base.버그 / 디버그

DOT-ICD 2021. 9. 8. 13:23
728x90

접은글의 Base포스트와 함께 읽어두자.


버그

프로그램을 1. 다운시키거나 2. 원하는 결과를 내게 하지 못하는 여러가지 오류를 통칭하는 말. 

종류

1. Syntax error

문법 오류. 컴파일러 또는 인터프리터는 지정된 문법에 따라 코드를 해석하고 기계어로 번역하는 과정을 거친다. 따라서, 프로그래머가 지정된 문법이 아닌 잘못된 문법으로 코드를 작성할 경우, 컴파일러와 인터프리터는 이 코드를 해석하지 못하며 이런 경우에 의해 발생하는 에러를 Syntax error 즉 문법 오류라고 칭한다.

 

2. Runtime error

문법적 오류가 아닌, 프로그래머가 프로그램을 코딩 즉 설계하는 과정에서 고려하지 못한 케이스로 인해 발생하는 에러. 간단한 예시를 들어 설명하자면, 10개의 데이터값을 받는 것을 상정하고 10의 크기를 갖는 배열을 선언하였으나, 입력으로 10개 이상의 입력값이 입력되어 발생하는 오류이다. 

 

3. Semantic error

1,2의 경우가 아닌 에러. 프로그래머가 프로그램을 설계하는 과정에서 논리적인 오류가 포함되어 발생하는 에러라고 할 수 있다. 문법적으로 문제가 있는 것도 아니고, 입력과 같은 부분에서 모든 케이스를 고려하였지만 프로그램이 원하는 결과를 산출하지 못할 때를 Semantic error라고 칭한다.

 

실제 개발 과정에서 Syntax error의 경우 IDE로 통칭되는 개발 툴에서 대부분의 오류를 경고하고 고칠 수 있게 도와주며, Runtime error 또한 미리 문제가 발생할 수 있다고 경고해줄 정도로 개발 툴이 잘 개발되어 있다. 따라서, 1과 2로 인해 디버그 과정에서 골치를 썪는 경우는 매우 드물다고 할 수 있다. 따라서 프로그래머들은 3의 경우로 인해 길고 긴 시간동안 디버깅에 고통을 받고 있다. 프로그램의 경우 규모가 커질수록 완벽한 논리를 쌓는 것은 불가능에 가깝기 때문에 3으로 인한 문제가 발생할 가능성이 매우 높으며, 또 그렇게 발생한 에러는 쉽게 고치기도 어렵다. 


디버그

프로그램 상에 존재하는 버그를 코드 수정을 통해 제거해나가는 과정을 통칭하는 말.

 

Syntax error, Runtime error의 경우 앞서 말했듯 VS(비쥬얼 스튜디오)와 같은 IDE에서 미리 경고 및 오류 창으로 버그를 발견할 수 있도록 도와주고 이를 통해 수정할 수 있다.

다만, Semantic error의 경우 논리적 결함이기 때문에 IDE에서는 직접적으로 해당 버그에 대한 오류를 해줄 수 없으며, 프로그래머가 직접 프로그램을 테스트하고 여러가지 경우를 따져가며 오류가 발생하는 부분을 찾아야 한다.

따라서, 실제 개발 과정에서는 프로그램을 코딩해서 초기 버전을 만드는 것보다 중요한 것이 초기 버전을 테스트하고 Semantici error를 발견하여 고치는 것이 중요하다. 

728x90

'Development language' 카테고리의 다른 글

Base.괄호 / OS / IDE  (0) 2021.09.29
Base.자료형, 변수, 메모리 주소  (0) 2021.09.29