Development Log
[CS50] 배열 - 디버깅, 코드 디자인 본문
버그(bug)
- 의도하지 않은 프로그램 내 실수를 뜻한다.
- 코드에 들어있는 오류이다.
- 버그로 인해 프로그램의 실행에 실패하거나 프로그래머가 원하는 대로 동작하지 않게 된다.
디버깅(debugging)
- 코드에 있는 버그를 식별하고 고치는 과정이다.
- 디버거라고 불리는 프로그램을 사용하여 디버깅을 하게 된다.
디버거
- 프로그램을 특정 행에서 멈출 수 있게 해주기 때문에 버그를 찾는데 도움이 된다.
- 멈춰진 지점에서 무슨 일이 일어나는지 볼 수 있다.
- 프로그램이 멈추는 특정 지점을 breakpoing(중지점)이라고 한다.
- printf와 같이 나중에 지워야 하는 코드를 더하지 않아도 컴퓨터의 메모리 안에서 벌어지는 일을 실행 도중에 확인할 수 있다.

=> 10번이 아닌 11번이 출력된다.
=> 논리적 오류가 발생해 원인을 찾기위해 breakpoint를 잡았다.
러버덕 디버깅(Rubber Duck Debugging)
- 어떤 오류가 발생했을 때, 그런데 그 오류가 잘 해결되지 않을 때, 누군가에게 질문하기 전에 책상 위의 오리에게 발생한 문제를 처음부터 설명하고 문제를 다시 해결해보는 것이다.
- 이를 통해 놓치고 있었던 논리적 오류를 찾을 수도 있다.
코드의 디자인
- 공백의 수나 줄바꿈과 같은 것들은 코드의 실행에 직접적으로 영향을 주지 않지만 코드를 작성하는 사람들이 코드를 읽고 이해하는데 영향을 준다.
- 많은 회사들은 코드를 작성할 때 특정한 스타일 가이드를 따르도록 한다.
여러 사람들이 코드를 작성하기 때문에 서로 불필요한 오해를 없애고, 코드를 이해하는 데 드는 비용을 최소화 하기 떄문이다.
Style Guide for C
There’s no one, right way to stylize code. But there are definitely a lot of wrong (or, at least, bad ways). Even so, CS50 does ask that you adhere to the conventions below so that we can reliably ...
cs50.readthedocs.io
think about
1) 디버깅을 도와주는 프로그램은 어떤 경우에 더 큰 도움이 될까요? 만약 이런 프로그램의 도움 없이 직접 디버깅을 해야 한다면 어떻게 코드를 작성하는 것이 좋을까요?
복잡한 코드(수백줄로 작성된 코드 등)에서 직접 버그를 찾기 힘들기 때문에 디버깅을 도와주는 프로그램이 있으면 훨씬 빠르고 정확하게 찾을 수 있을 것이다.
디버깅 프로그램이 없을 경우에는 printf와 같은 출력 함수를 이용해서 의심가는 부분을 직접 확인할 것이다.
2) 만약 여러 사람들이 함께 참여하는 프로젝트에서, 각자가 작성하는 코드 스타일 서로 다르다면 어떤 비효율적인 일이 발생할까요?
코드 수정, 삭제, 보완 등의 작업을 할 때, 코드 스타일이 다르면 다른 사람의 코드를 이해하는데 많은 시간이 소요된다. 즉, 작업시간이 오래걸리게 된다.
David J. Malan의 강의
모두를 위한 컴퓨터 과학 (CS50 2019)
부스트코스 무료 강의
www.boostcourse.org
'성장 여행기 > CS50' 카테고리의 다른 글
| [CS50] 알고리즘 - 검색 알고리즘 (0) | 2022.03.28 |
|---|---|
| [CS50] 배열 - 배열, 문자열, 명령행 인자 (0) | 2022.03.27 |
| [CS50] 배열 - 컴파일링 (0) | 2022.03.25 |
| [CS50] C언어 - 하드웨어의 한계 (0) | 2022.03.25 |
| [CS50] C언어 - 사용자 정의 함수, do-while, 중첩 루프 (0) | 2022.03.25 |