파이썬 디버깅 - 01 왜 디버깅이 필요할까요?

핏자·2023년 4월 7일

인공지능사관학교

목록 보기
9/31
post-thumbnail

- 일반적인 코딩 수업은...

어떻게 하면 좋은 프로그램을 만들까?

좋은 코드를 짜려면 어떻게 해야 할까?

- 도전! 디버깅 입문 수업은...

어떻게 하면 실수를 덜 할 수 있을까?

틀린 코드를 어떻게 고쳐야 할까?

- 에러를 만났을때

def greeting(your_naem):
	print("Hello, " + yourname + "!")

greeting("Donald Trump")
# Hello, Donald Trump!
Traceback ( most recent call last) :
 File "main.py", line 4, in <module>
  greeting("Donald Trump")
 File "main.py", line 2, in greeting
  print("Hello", yourname + "!")
NameError: name'yourname' is not defined



  • 버그와 예외

- 버그(Bug)

코드가 원하는 대로 동작하지 않는 모든 경우


* 프로그램이 죽는(크래시가 발생하는) 경우

* 예상한 속도보다 훨씬 느리게 동작하는 경우

* 잘못된 결과를 출력하는 경우

* 코드 설계 상일어나면 안 되는 상황이 일어난 경우

- 예외(Exception)

일반적이지 않은 코드의 동작


* 사용자가 프로그램을 강제 종료하는 경우

* 분수의 분모에 0이 들어가는 경우

* 열고자 하는 파일이 존재하지 않는 경우

* 인터넷이 불안정한 경우

- 예외 처리(Exception handling)

상황1) 인터넷 상의 파일을 불러옴 -> 불러오는 동안 로딩 화면을 띄움 -> 다 불러온 뒤 파일의 내용을 화면에 표시

파일을 불러오는 중에 인터넷이 끊겼다면?

-> 처리되지 않은 예외는 버그를 만들 수 있음!


상황2) 업로드하고 싶은 사진을 선택 -> 사진을 SNS에 업로드

사진 업로드 중에 배터리가 없어 휴대폰이 꺼졌다면?

-> 개발자는 사용자의 다양한 상황을 예측할 수 있어야함




  • 디버깅이란?

- 디버깅이란?

사용/테스트 중 찾아낸 버그를 없애 나가는 과정

* 버그의 원인을 찾고

* 발생한 버그를 해결하고

* 비슷한 버그의 재발을 방지하는 것

- 버그의 원인 찾기

* 어떤 상황에서, 어떤 조작을 했을 때 일어났는가?

* 얼마나 잦은 빈도로 발생하는가?

* 에러 메시지가 뜬다면 내용이 무엇인가?

- 발생한 버그 해결하기

* 버그가 발생한 원인을 해결하려면 어떻게 해야 하는가?

* 새로운 코드가 일으킬 새로운 버그는 없는가?

- 버그 재발 방지하기

* 버그를 일으킨 코그다 다른 곳에서 사용되는가?

* 비슷한 설계를 이용한 다른 코드는 없는가?

* 고친 코드의 약점은 없는가?

* 코드를 지속적으로 검증할 방법은 무엇인가?




  • 디버깅이 중요한 이유

- 사용자 경험과 직결

버그로 인한 불쾌한 경험 > 새로운 기능

- 처음부터 완벽한 코드는 없다

코드가 잘 작동하지 않을 때 - 어... 왜 안 되지?

코드가 한 번에 작동할 때 - 어... 왜 벌써 되지?

빠르게 문제를 파악/해결하는 것이 능력!

- 실패는 성공의 어머니

많은 버그를 경험할수록,

안전한 코드를 설계하는 능력이 생긴다!

profile
개발자 핏자의 로그들

0개의 댓글