CodeGym /행동 /Python SELF KO /프로그램 디버깅

프로그램 디버깅

Python SELF KO
레벨 18 , 레슨 2
사용 가능

8.1 버그 발생

소프트웨어 디버깅은 프로그램의 오류 또는 버그를 찾고 수정하는 과정이야. 이 과정은 소프트웨어 개발에서 가장 흥미롭고 중요한 부분 중 하나지, 또한 프로그램이 제대로 작동하도록 도와줘.

"bug" 용어의 역사

"bug"라는 용어는 1940년대에 컴퓨터 프로그램의 맥락에서 처음 사용되었어. 컴퓨터가 등장하기 전에도 "버그"라는 개념은 존재했으며, 이는 다양한 장치의 기계적 결함을 나타낼 때 사용됐어.

컴퓨터 기술에서 "bug"라는 용어를 사용한 첫 번째 문서화된 사례는 1947년 하버드 대학교의 Mark II 컴퓨터 팀에서 발생했어. 그들은 한 기계의 릴레이가 잘 작동하지 않는 원인이 나방 때문이라는 것을 발견했지. 그들은 곤충을 제거하고 이를 "첫 실제 벌레 발견 사례"로 기록했어 (literal bug).

이 사건이 "bug"라는 용어를 처음 사용한 것은 아니지만, 이 사건을 통해 "bug"라는 용어가 유명해지고 널리 사용되게 되었어.

프로그램 디버깅

디버깅은 소프트웨어의 버그를 찾고 진단하며 수정하는 과정이야. 디버깅 과정은 여러 단계로 구성돼:

  • 오류 탐지: 프로그램에서 오류가 있음을 나타내는 증상들을 식별하는 단계.
  • 오류 재현: 오류가 다시 발생하는 조건을 만들어서 그 본질을 더 잘 이해하려고 하는 단계.
  • 문제 진단: 코드를 분석하고 오류의 원인을 찾기 위해 여러 도구와 방법을 사용하는 단계.
  • 오류 수정: 오류를 제거하기 위해 코드에 변경 사항을 적용하는 단계.
  • 테스트: 수정이 잘 되었는지 확인하고, 새로운 문제가 발생하지 않았는지 테스트하는 단계.

자, bug는 프로그램의 모든 오류를 의미하는 일반적인 이름이고, debug는 이러한 오류를 발견하고 해결하는 과정이야.

8.2 디버깅 도구와 방법

로그 기록

프로그램 코드에 로그를 추가하면 프로그램의 실행 상황을 추적하고, 프로그램 실행의 여러 지점에서 변수의 상태와 작업에 대한 정보를 얻을 수 있어. Python에서 로그를 기록하기 위한 훌륭한 라이브러리가 logging이야.

로그를 사용하는 예:


import logging

# 디버깅 정보를 출력하기 위한 로깅 설정
logging.basicConfig(level=logging.DEBUG)
            

def divide(a, b):
    # 나눗셈 시도 로그 기록
    logging.debug(f"나누기 {a} / {b}")
    if b == 0:
        # b가 0일 때 오류 로그 기록
        logging.error("0으로 나누려고 시도!")
        return None

    # b가 0이 아닐 때 나누기 수행
    return a / b
            
result = divide(10, 2)
print(result)

디버거 사용 (Debuggers)

디버거는 개발자들이 프로그램을 단계별로 실행하고, 중단점 (breakpoints)을 설정하고, 변수의 값을 확인하고 프로그램 실행 중에 값을 변경할 수 있게 해주는 도구야.

인기 있는 디버거들:

  1. GDB: C, C++ 및 다른 프로그래밍 언어들을 위한 GNU 디버거.
  2. PDB: Python 내장 디버거.
  3. Visual Studio Debugger: Microsoft Visual Studio에 내장된 디버거.
  4. PyCharm Debugger: Python IDE인 PyCharm에 내장된 디버거.

PDB 사용 예


import pdb

def faulty_function(a, b):
    pdb.set_trace()  # 중단점 설정
    result = a / b
    return result
            
faulty_function(10, 0)

프로그램이 pdb.set_trace()에 도달하면 멈추고, 그 이후로는 next (다음 단계), print (변수 값 출력) 등과 같은 디버거 명령어를 실행할 수 있어.

우리는 PyCharm에 내장된 디버거를 사용해 프로그램 디버깅을 배울 예정이야.

8.3 디버깅 사용법

일반적으로 debug는 오류를 식별하고 수정하기 위해 디버깅 도구와 모범 사례를 적극적으로 사용하는 것을 포함해.

중단점 설정: 코드에 중단점을 설정하여 프로그램을 멈추고자 하는 지점에서 멈추도록 해.

단계별 실행: 프로그램을 한 단계씩 실행하면서 프로그램의 상태 변화와 변수의 값을 관찰해.

변수 분석: 프로그램 실행의 다양한 단계에서 변수와 표현식의 값을 검사하여 잘못된 데이터나 논리적 오류를 찾아봐.

오류 수정: 발견된 오류를 제거하기 위해 코드에 변경을 가해.

재테스트: 오류를 수정한 후에 프로그램을 테스트하여 오류가 수정되었고 새로운 문제가 발생하지 않았는지 확인해.

간단해 보이지 않아? 다음 강의에서는 모든 단계에 대해 자세히 살펴볼 거야 :)

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION