논리 오류

컴퓨터에 부정확한 발생

논리 오류(論理誤謬, 영어: logic error)는 컴퓨터 프로그래밍에서 프로그램이 부정확하게 동작하게 하지만 비정상적으로 종료 또는 충돌시키지는 않는 버그이다. 논리 오류는 비록 즉시 인식되지는 않지만 의도치 않은 또는 바라지 않은 결과나 다른 행동을 유발한다.

논리 오류들은 컴파일 언어 그리고 인터프리터 언어에서 모두 발생한다. 프로그램의 구문 오류와는 다르게, 논리 오류는 비록 의도되지 않은 행동을 하지만 언어에서 유효한 프로그램이다. 논리 오류의 존재에 대한 유일한 단서는 잘못된 해결법의 생산이다.

논리 오류 디버깅

편집

이러한 종류의 오류들을 찾는 방법 중 하나는 코드에서 오류의 위치를 정의하기 위해 프로그램의 변수들의 출력을 파일이나 화면에 나오게 하는 것이다. 비록 이것이 모든 경우에 통하지는 않지만, 예를 들면 잘못된 서브루틴을 호출할 때, 만약 프로그램이 나쁜 수학적 계산의 부정확한 결과를 사용한다면 문제를 찾는 가장 쉬운 방법이다.

예시

편집

이 예제 함수는 C로 만들어졌으며 논리 오류를 포함하는, 두 수의 평균을 계산한다. 이것은 계산에서 괄호를 사용하지 않아서, 컴파일되고 실행되지만 정확한 답을 주지는 않는다(나누기가 덧셈 전에 수행된다).

int average(int a, int b)
{
    return a + b / 2;     /* should be (a + b) / 2 */
}

같이 보기

편집