오늘은 디버깅에 대해서 한번 적어보려고 한다
사실 지금 강의를 열심히 들으면서도 기초가 너무 부족하다는 생각이 들어
부족한 기초지식들을 벨로그에 적으면서 보완해보려고 한다.
일단 가장 중요한 디버깅(debuging)을 단 한번도 하지 않고
중요성을 몰랐기에.. 아니 사실 중요성은 알았으나 굳이 왜 해? 라는 생각에
단 한번도 디버깅을 한적이 없다 ^?*
항상 AI를 활용해서 오류 고치기에 급급했고 (코드복붙;) 단순한 오류도
몇시간씩 소요하며 오류를 해결했다..
그런데 맨토링시간에 멘토님과 함께 교육에 관한 피드백을 받을 때
엄청나게 부족한 나를 느끼며
가장 와 닿았던 말 중에 하나는 AI를 활용하는 내가 어느날 갑자기
AI가 준 코드 복붙하며 잘 지내고 있는데 아래와 같은 상황이 나타났다고 가정해보자
만약 AI가 잘못된 코드를 전달한다면?
AI가 한번 뻑이 나 버리면? = 나도 같이 뻑이나는 사람
코드 한줄 한줄 적으며 내가 적은 코드가 다른 코드와는
어떠한 차별점 혹은 기발함을 통해 다른 개발자가 생각하지 못한 코드들로
나만의 API를 개발 할 수 있는 개발자가 되어야 경쟁력이 있지 않을까?
라는 생각을 하며 기본적인 부분들을 조금씩 보완해보려고 한다
아무튼 지금 이 글은 디버깅에 대해 조금 자세하게 적어보려고 한다.
일단 내가 쓰고 있는 IDE는 vscode와 pycharm 두개를 쓰고 있다.
아 참 IDE란?(Integrated Development Environment) 통합 개발 환경이다.
한마디로 내가 쓰는 코드 프로그램 말하는거
사실 vscode로 코딩을 시작해서 그런지 아직 pycharm보다는 vscode가 핏한 느낌이다.
anyway 두개의 IDE 모두 디버깅을 하는 법이 엄청 쉬운데
각각의 IDE 모두 중단점만 찍어주면 된다.
왼쪽이 vscode의 중단점이고 오른쪽이 pycharm의 중단점이다.
모두 내가 원하는 코드에 중단점을 찍고 디버깅을 클릭해주면 된다!
예를 들어서 설명을 해보겠다
아래에 코드의 예시를 보고 확인해보자
def test_muscle(pound):
if pound >= 500:
return print("너는 언더아머의 자격이 된다.")
else:
print("언더어마를 당장 벗으셈")
pound = int
pound = "모름"
muscle_test = test_muscle(pound)
print(muscle_test)
여기서 오류가 날 부분은 pound라는 변수가 될 수 있겠다.
나는 test_muscle이라는 함수를 만들어두고
pound에는 강제로 "모름"이라는 값을 넣어주었다.
그럼 여기서 나타날 수 있는 오류는 TypeError가 날 수 있는데
우리가 예상했던 대로 TypeError가 나타난 것을 볼 수 있다.
나는 변수를 넣어준 곳에 중단점을 찍었고 step into를 통해 하나씩 코드를 분석해본 결과
저런 에러가 뜬다고 알려주었다.
💡 디버깅 명령어는 짚고가자
watch = 창에서 변수 모니터링
call stack = 실행 흐름 파악
breakpoints = 목록 관리
variables = 창에서 현재 범위의 모든 변수 확인
💡 우리가 가장 많이 사용하게 될 디버깅에 대해?
def calculate_grade(score):
if score >= 90: # 여기 중단점 설정
grade = 'A'
elif score >= 80:
grade = 'B'
elif score >= 70:
grade = 'C'
else:
grade = 'D'
return grade # 여기 중단점 설정
scores = [85, 92, 78, 95]
for score in scores:
result = calculate_grade(score)
print(f"점수 {score}: {result}등급")
나는 글로만 보는 디버깅은 도저히 이해할 수 없어 간단한 예제를 작성해서 디버깅을
익히는게 가장 좋다고 생각했다.
중단점을 직접 찍어보고 코드가 어떤순서로 이동하는지 확인을 하면
디버깅에 대해 조금 더 빠르게 이해할 수 있을 것 같다.
우리가 자주 사용하게 될 상황에 대해 마지막으로 정리해보자면
1. API 응답 데이터 확인할 때
2. 데이터베이스 쿼리 결과 확인할 때
3. 사용자 입력 처리 과정 추적할 때
4. 성능 문제 발생 지점 찾을 때
등등 자주 디버깅을 사용해서 코드의 문제점을 쉽게 찾아내보자!!