파이썬 디버깅 도구인 pdb는 코드의 실행 중에 오류를 찾고 디버깅하는 데 도움을 줍니다. pdb는 프로그램을 실행하면서 각 줄마다 중단점을 설정하거나, 스텝 단계별로 코드를 실행하고 변수와 함수의 값을 확인할 수 있습니다. 그 중에서도 특히 함수와 메서드 호출 추적은 디버깅 작업에서 매우 유용한 기능입니다.
함수 호출 추적
pdb를 사용하여 파이썬 스크립트를 디버깅하는 경우, 코드의 어느 부분이 실행 중에 특정 함수를 호출했는지 추적할 수 있습니다. pdb.set_trace()
함수를 이용하여 중단점을 설정한 후, s
명령을 통해 함수 호출을 추적할 수 있습니다.
아래 예시를 통해 함수 호출 추적을 살펴보겠습니다:
import pdb
def calculate_sum(a, b):
result = a + b
return result
def calculate_product(a, b):
result = a * b
return result
def main():
x = 5
y = 10
pdb.set_trace()
sum_result = calculate_sum(x, y)
product_result = calculate_product(x, y)
print(f"Sum result: {sum_result}")
print(f"Product result: {product_result}")
if __name__ == "__main__":
main()
위 예시 코드에서 pdb.set_trace()
를 호출한 뒤 스크립트를 실행하면, pdb
프롬프트가 표시되며 코드의 실행이 중지됩니다. 이 상태에서 s
를 입력하여 함수 호출을 추적합니다.
-> sum_result = calculate_sum(x, y)
(Pdb) s
--Call--
> /path-to-script/main.py(4)calculate_sum()
-> def calculate_sum(a, b):
(Pdb) s
> /path-to-script/main.py(5)calculate_sum()
-> result = a + b
(Pdb) s
--Return--
> /path-to-script/main.py(5)calculate_sum()->15
-> return result
디버깅 중에 함수의 내부로 이동하고 각 줄을 실행할 때, 현재 실행중인 함수의 호출 추적이 자동으로 표시됩니다. --Call--
과 --Return--
표시를 통해 함수가 호출되는 위치와 종료되는 위치를 알 수 있습니다.
메서드 호출 추적
클래스의 메서드 또한 pdb를 사용하여 디버깅할 수 있습니다. pdb.set_trace()
를 호출한 후 스크립트를 실행하면, 메서드 호출 추적을 수행할 수 있습니다. 아래 예시를 통해 메서드 호출 추적을 확인해보겠습니다:
import pdb
class Calculator:
def __init__(self):
self.result = 0
def add(self, a, b):
self.result = a + b
return self.result
def multiply(self, a, b):
self.result = a * b
return self.result
def main():
calculator = Calculator()
x = 5
y = 10
pdb.set_trace()
sum_result = calculator.add(x, y)
product_result = calculator.multiply(x, y)
print(f"Sum result: {sum_result}")
print(f"Product result: {product_result}")
if __name__ == "__main__":
main()
위 예시 코드에서도 pdb.set_trace()
를 호출한 뒤 스크립트를 실행하면, pdb
프롬프트가 표시되고 코드의 실행이 중단됩니다. s
명령을 사용하여 메서드 호출을 추적할 수 있습니다.
-> sum_result = calculator.add(x, y)
(Pdb) s
--Call--
> /path-to-script/main.py(7)add()
-> def add(self, a, b):
(Pdb) s
> /path-to-script/main.py(8)add()
-> self.result = a + b
(Pdb) s
--Return--
> /path-to-script/main.py(8)add()->15
-> return self.result
메서드 호출 추적 역시 --Call--
과 --Return--
을 통해 메서드 호출 위치 및 종료 위치를 추적할 수 있습니다.
결론
pdb를 사용하여 파이썬 코드를 디버깅할 때, 함수와 메서드 호출 추적은 오류 해결 및 코드 분석에 매우 유용한 기능입니다. pdb.set_trace()
를 사용하여 중단점을 설정하고 s
명령을 통해 함수와 메서드 호출을 추적하여 코드의 실행 흐름을 이해할 수 있습니다. 디버깅 기능을 적절히 활용하여 효율적인 디버깅 과정을 거쳐 더 품질 좋은 파이썬 애플리케이션을 개발할 수 있습니다.