카테고리 없음

디버깅

하나둘세현 2023. 3. 22. 16:34
728x90

Debugging(디버깅)

디버깅은 소프트웨어 개발자라면 누구나 알아야할 기술이다. 또한 중요한 기술이기도 하다. 오류를 찾아 고치는 것이다.

 

소프트웨어 버그는 컴퓨터 프로그램의 결함이나 문제이다. 기본적으로 프로그램의 예상치 못하거나 의도치 않은 행동이 버그이다.

 

버그라는 용어는 실제 버그가 하버드대 컴퓨터에서 오류를 일으켜서 1940년대에 만들어졌다.

 

프로그램에서 버그가 바생하는 이유는 다양하다. 하지만 중요한 것은 버그는 소프트웨어 개발의 정상적인 부분이라는 것이다. 놀랍게도 복잡한 앱에는 버그가 포함되어있다.  물론 몇년동안 발견되지 않은 버그는 보안상의 허점이나 다른 문제를 일으킬 수 있다. 


만약에 역방향 함수 작성을 마쳤다고 가정해보겠다.

 

reverse([1, 3, 5, 7])

[5, 1, 7, 3]

 

호출을 했는데 결과가 이상하다. 반환값이 뒤죽박죽이지만 역전되지 않았다. 그말은 즉 역방향 함수어딘가 버그가 존재한다는 것이다. 이걸 고치려면 디버깅이란 프로세스를 사용해야한다. 본질적으로 버그를 찾아 고치고 예방하는 거다. 

 

1단계는 어떤 종류의 버그가 있다는 것을 인식하는 것이다.

응용 프로그램에서는 버그가 발견되지 않는 경우가 있기 때문이다.

→ 버그 발견은 보통 개발 중에 일어난다.

→ 자동 테스트 소프트웨어나 제작 중

→ 사용자 리포트를 이용해서 

그리고 생산 중에 발견된 버그는 최.악.의.버.그.이다. why? 개발 중에 발견되지 않아 실제 사용자들에게 영향을 미치기 때문이다.  

그래서 자동 테스트를 통해 초기의 버그를 잡는 것이 중요하다. 🐛 

 

2단계는 버그가 있다는 걸 알게 되면 코드로 들어가 버그를 찾아야한다. 정확히 어디서 발생하고 있는지 분리해야한다.

이미 알고 있는 개발자 큰솔을 이용해 할 수 있다. 

→ 기능이 작은 버그와 버그의 위치를 알 수 있는 간단한 코드에만 적용된다.

→ 코드가 좀 더 복잡하고 버그가 어디 있는지 알 수 없다면 디버거 소프트웨어를 사용해야한다.

 

3단계 고치는 것이다.

버그를 바로잡을 수 있게 고치는 거다. 이게 가장 쉬운 부분일 것이다.

그러니까 우리가 할 일은 기존의 것을 대체하는 것이다. 새로운 올바른 솔루션으로 잘못된 솔루션을 바꾸는 것이다. 

 

마지막 단계는 코드 베이스에서 버그가 재발하는 걸 막아야한다.

예를 들어 프로젝트에서 같은 버그를 검색할 수 있다. 비슷한 코드나 비슷한 기능에서도 말이다.

 코드에서 같은 실수를 두번했을 수도 있다. 그러면 이제 버그를 고쳐야한다.

 

버그를 예방하는 더 나은 방법은 테스트 소프트웨어를 이용해 테스트를 작성하는 것이다. 코스에 테스트에 대한 보너스 섹션을 추가할 수도 있다. 왜냐하면 이건 소프트웨어 개발에서 중요한 부분이다.

 

 

 

728x90