24.01.03 TIL - [C#] 디버그

JJwoo·2024년 1월 3일
0

C#

목록 보기
13/20

🐞 디버그(Debug), 디버깅(Debugging)

프로그램 개발 과정에서 발생하는 오류나 버그를 찾아내고 수정하는 과정을 말하며, 이러한 과정을 '디버깅(debugging)'이라고 하며, 프로그래밍에서 매우 중요한 부분이다.

유래도 있는데, 대충 '어느 날 컴퓨터 오류가 발생해서 원인을 찾아보니 부품에 끼어있던 나방 벌레가 오류의 원인이었다' 는 이야기.


디버깅의 주요 목적은 프로그램의 문제점을 찾아내고 해결하여, 프로그램이 의도대로 정확하고 효율적으로 작동하도록 하는 것이다.

디버깅 과정의 주요 단계

  • 1) 오류 탐지: 프로그램 실행 중 발생하는 오류(버그)를 탐지합니다. 이는 프로그램이 예상과 다르게 동작하거나, 오류 메시지를 출력하는 것을 통해 발견될 수 있습니다.

  • 2) 문제 분석: 발견된 오류의 원인을 분석합니다. 이를 위해 코드를 검토하고, 문제가 발생하는 상황을 이해하려고 합니다.

  • 3) 디버깅 도구 사용: 디버깅 과정에서는 다양한 도구를 사용할 수 있습니다. 이러한 도구는 코드의 실행을 단계별로 추적하고, 변수의 값이나 메모리 상태 등을 확인하는 데 도움을 줍니다.

  • 4) 오류 수정: 문제의 원인을 파악한 후, 적절한 수정을 통해 오류를 해결합니다.

  • 5) 테스트 및 검증: 수정 후에는 프로그램을 다시 테스트하여 오류가 완전히 해결되었는지 검증합니다.


디버깅 도구

브레이크포인트(Breakpoints)

: 중단점, 프로그램 실행을 특정 지점에서 일시 중지하고, 그 시점에서의 변수 값이나 프로그램의 상태를 검사할 수 있습니다.


스텝 오버(Step Over)/스텝 인투(Step Into):

코드를 한 줄씩 실행하며, 각 줄에서 프로그램의 동작을 확인할 수 있다.

스텝 오버(Step Over)

정의: 현재 줄에 있는 코드를 실행하고 다음 줄로 이동

  • 사용법: 함수나 메서드 호출이 포함된 코드 줄에서 사용할 때 유용하다. 스텝 오버를 사용하면, 함수 내부로 들어가지 않고 해당 함수가 실행되는 것만 확인.

  • 적용: 함수의 내부 로직보다는 전체적인 실행 흐름을 확인하고 싶을 때 사용.

스텝 인투(Step Into)

  • 정의: 현재 줄의 코드를 실행하는데, 만약 함수나 메서드 호출이 있다면 그 함수나 메서드의 내부로 진입.

  • 사용법: 함수나 메서드의 내부 구현을 세부적으로 확인하고 싶을 때 사용.

  • 적용: 함수나 메서드의 정확한 동작 방식을 이해하고자 할 때 유용하다.


콘솔 로그(Console Logs)

  • 프로그램의 실행 중간에 변수 값이나 상태를 콘솔에 출력하여 확인할 수 있다.

프로파일러(Profilers)

  • 프로그램의 성능 문제를 분석하기 위해 사용되며, 메모리 사용량이나 실행 시간 등을 측정할 수 있다.

디버그 - 성능 프로파일러 (Alt + F2)

CPU, GPU, 메모리 등 보고 싶은 데이터를 선택하여 분석할 수 있다.

시간에 따른 그래프가 나오고, 함수 명을 클릭하여 CPU Usage 등의 정보를 볼 수도 있다.


디버깅은 프로그램 개발 과정의 필수적인 부분으로, 효과적인 디버깅 기술은 더 나은 코드 품질과 성능을 보장하는 데 중요한 역할을 한다.
profile
개발 모코코

0개의 댓글