728x90
1. VS Code 디버깅 소개
지금까지 디버깅을 크게 사용하지 않고 단순 무식하게 코드를 짰었는데, 이번에 논문의 코드를 보다보니 도저히 알 수 없는 경우가 많아서 이제서야... 디버깅을 써보기로 했습니다. 이 글에서는 간략하게 VScode의 디버깅을 설명하고 실제로 해보는 걸 목표로 합니다.
2. 기본 설정 및 준비
당연히 VS Code가 설치 되어있고 Python 환경 설정이 이미 해결된 상태라고 가정하고 설명하겠습니다.
3. 기본 디버깅 사용법
코드 작성 및 브레이크포인트 설정
간단한 Python 코드를 작성합니다:
def add(a, b):
result = a + b
return result
if __name__ == "__main__":
x = 5
y = 10
sum = add(x, y)
print(f"The sum of {x} and {y} is {sum}")
- 코드의 줄 번호 왼쪽을 클릭하여 브레이크포인트를 설정합니다.
- 디버깅 시작: 왼쪽 사이드바의 Run & Debug 아이콘을 클릭하고 "Python: Current File"을 선택한 후, 상단의 녹색 삼각형 버튼을 클릭하여 디버깅을 시작합니다.
- 다만 이렇게만 실행하면 단순하게 실행한 것과 다름이 없습니다. 이제부터 원하는 곳을 확인하기 위해 Breakpoint를 걸고 실행이 거기서 멈추도록 해야합니다.
- y=10에 중단점을 설정하고 화면을 확인해보겠습니다. 다음과 같이 화면이 뜨는 것을 확인할 수 있고 상단에 다양한 키가 생겼는데 이에 대해서 설명해보겠습니다.
디버깅 시작 및 변수 확인
- 브레이크포인트에서 실행이 중지되면, VARIABLES 창에서 변수 값을 확인합니다.
- 그 외에도 WATCH, CALL STACK을 통해서 원하는 변수확인, 함수의 순서를 확인할 수도 있습니다.
- Continue (F5): 단순한 실행입니다. 다음 중단점으로 이동합니다.
- Step Over (F10): 다음 줄로 이동하여 코드를 실행합니다. 일반적으로 많이 쓰게 되는 키입니다. 단순하게 하나씩 넘어가는데 주의할 점은 함수는 들어가지 않습니다.
- Step Into (F11): 그래서 이 버튼이 있습니다. 함수 내부로 들어가며 실행하는데 저는 이 함수를 많이 이용하며 보고 싶은 함수에서 중단점을 걸어두고 step into를 하시면 됩니다.
- Step Out (Shift + F11): 함수 밖으로 나와서 상위 함수로 돌아갑니다. 이번에는 함수에 들어가있는 상태에서 바로 나오는 키입니다. 어느정도 확인해보고 나오고 싶을 때 사용합니다.
- Restart : 파일을 재시작합니다. VScode에 이전의 값으로 돌아가는 키가 없기 때문에 다시 해볼 때 사용합니다.
- Stop : 디버깅을 종료합니다.
4. 고급 디버깅 기능
조건부 중단점
- 중단점 위에서 오른쪽 클릭하여 "Edit Breakpoint..."를 선택합니다.
- 조건을 입력합니다 (예: x == 5).
- 그 외에도 체크포인트 등을 이용하는 것도 있었으나, 아직까지 필요성을 느끼지 못해서 넘어가도록 하겠습니다. 혹시 필요하신 분은 찾아보시면 좋을 것 같습니다.
5. 중단점 관리 및 팁
- 좌측 사이드바의 디버깅 아이콘을 클릭하고, 중단점 패널에서 현재 설정된 모든 중단점을 확인하고 관리할 수 있습니다.
- 특정 중단점을 선택하여 활성화하거나 비활성화할 수 있습니다.
- 모든 중단점을 제거하려면 중단점 패널에서 "Remove All Breakpoints"를 선택합니다.
6. 결론
VS Code의 디버깅 기능을 통해 코드의 문제를 효과적으로 찾아내고 수정할 수 있습니다. 기본적인 브레이크포인트 설정부터 조건부 중단점과 같은 고급 기능을 활용하여 디버깅을 효율적으로 수행해보는 것이 좋을 것 같습니다. 기능은 좋은 것이 많으니 자신에게 편한 것을 잘 취사선택하면 좋을 것 같습니다!
참고자료
- https://wikidocs.net/137962
- https://velog.io/@jiseon-han/%EB%94%94%EB%B2%84%EA%B9%85-%EB%B0%A9%EB%B2%95
- https://velog.io/@rimmz/%EB%94%94%EB%B2%84%EA%B9%85%EC%9D%B4%EB%9E%80-VSCode-%EB%94%94%EB%B2%84%EA%B9%85-%EB%B0%A9%EB%B2%95-%EB%B0%8F-%ED%8C%81
728x90
'Learn' 카테고리의 다른 글
[알고리즘] 다이나믹 프로그래밍2 : 더 많은 예제 풀이 (0) | 2024.07.17 |
---|---|
[알고리즘] 다이나믹 프로그래밍 : 작은 것부터 시작하자! (0) | 2024.07.16 |
[알고리즘] 배열을 쓰지말고 풀어봐 : 비트마스크 (0) | 2024.07.09 |
[LTSF] Are Transformers Effective for Time Series Forecasting? (2) | 2024.07.08 |
[LSTF] Autoformer: Decomposition Transformers withAuto-Correlation for Long-Term Series Forecasting (0) | 2024.07.07 |