좋은 프로그래머가 되기 위해서는 코드를 잘 구성하고 구현하는 것도 중요하지만
문제가 발생했을 때 그것을 빠르게 찾아내고 정확한 방법으로 해결하는 능력이
더 중요하다고 생각한다. 그렇기 때문에 디버그를 해야하는 이유와 방법을 소개하며
개념을 숙지하고자 한다.
디버그란?
코드에서 발생하는 오류에 대한 이유를 검출하고 수정하기 위한 작업 과정이다.
디버깅을 해야하는 이유
개인 프로젝트나 알고리즘 문제를 풀 때는 규모도 작고 시간도 자유로워서 디버그를
굳이 하지 않고 계속 코드를 바꿔가면서 실행하는 경우가 많다. 하지만 한 번 실행하는데
1 ~ 2분 이상이 걸리고 주어진 시간안에 치명적인 버그를 고치지 못하는 상황이라면
계속 코드를 바꿔가며 실행하는 것은 굉장히 비효율적일 것이고 프로젝트에 큰 영향을
끼칠 것이다.
그렇기 때문에 디버깅은 버그와 같은 비정상적인 동작을 찾아내고 이를 해결하여
코드를 최적화 할 수 있기 때문에 필수로 해야하는 과정이다.
디버그 방법
<Visual Studio 기준>
F5를 클릭한다면 디버그 모드로 진입한다.
여기서 중요한 점은 브레이크 포인트를 걸어야 하는데 자신이 원하는
코드 영역에 브레이크 포인트를 걸면 그 부분에 코드의 흐름이 중단되며
그 부분부터 디버깅 도구를 사용하여 해당 위치에 코드를 검사할 수 있다.
디버깅 도구
Step Over - 실행중인 함수의 라인 이동 -> 다음 함수를 만났을 때 그 함수는 호출 완료됨 (단축키: F10)
Step Into - 실행중인 함수의 라인 이동 -> 다음 함수를 만났을 때 그 함수의 내부로 이동함 (단축키: F11)
Step Out - 실행중인 함수 빠져나가기 (단축키: Shift + F11)
브레이크 포인트를 거는 방법은 코드 라인을 클릭 후 F9를 누르거나
코드 왼쪽 빈 영역을 클릭하면 빨간 원 표시로 브레이크 포인트가 나타난다.
브레이크 포인트를 걸고 디버깅을 하다보면 본인이 검사하고 싶은 부분이 굉장히
많은 작업을 해야만 나오는 경우가 있다.
(ex: 디버그를 하고 싶은 부분이 for문 300번을 돌아야 나올 때)
그럴 때 브레이크 포인트 조건을 걸게 된다면 자신이 원하는 부분을 디버깅 할 수 있게 되며
시간 단축과 효율성이 올라가게 된다.
추가로 복잡한 디버그를 할 때엔 호출 스택을 확인하여 함수의 흐름을
확인하는 것이 좋다.
'TIL > C#' 카테고리의 다른 글
[C#] 메모리 구조에 대한 이해 (0) | 2024.01.29 |
---|---|
[C#] 인터페이스와 추상클래스에 대하여 (1) | 2023.11.15 |
[C#] 오버로딩과 오버라이딩 (0) | 2023.11.14 |
[C#] 객체지향 (OOP, SOLID) (0) | 2023.11.13 |
[C#] 스택, 힙 메모리란 무엇인가 (0) | 2023.11.10 |