일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- java.io
- docker image
- 디버깅
- 거스름돈
- 그리디 알고리즘
- Java
- 프로그래머스
- date_format
- 전자레인지 문제
- SQL
- Docker 핵심
- greedy
- DevOps
- 알고리즘
- 백준
- Access Modifier
- 서브넷
- sqlplus
- 탐욕 알고리즘
- Greedy 알고리즘
- 코테
- join
- docker 개념
- 클라우드
- 자바스크립트 기초
- docker
- MySQL
- reference data type
- 브론즈
- debugging
- Today
- Total
나는매일가운데
디버깅 용어(?) 및 인텔리제이에서 활용법 본문
1. Debugging...?
- 컴퓨터 프로그램 개발 단계 중 시스템의 논리적인 오류나 버그를 찾아내 그 원인을 밝혀내고 수정하는 작업 과정을 의미한다.
- 혹은 실제 데이터, 코드를 변경하지 않고 임의 값을 디버깅 중간에 넣어서 확인하는 과정을 말한다.
=> 두 번째의 경우 코드를 변경하지 않더라도 값을 임의로 변경할 수 있기 때문에 활용방안이 높다 (유지 보수성 증가...??)
2. Break point...?
- 개발에서 프로그램을 의도적으로 잠시 혹은 완전히 멈추게 하는 지점, 디버깅 목적으로 넣는 포인트를 의미함.
3. Bug...?
- 잘못되거나 예기치 않은 문제를 발생시키는 결함 혹은 문제 (예를 들어 내가 짠 코드...ㅎㅎ)
4. 주의사항
- 현재 라인으로 이동했을 때, 실행된 상태가 아니다. 즉, 현재 라인에서 다음 라인으로 이동한 상태가 되어야 이전 라인이 실행된 것이며, 변수를 확인할 수 없다 (선언된 상태가 아니기 때문).
- 일반적으로 스프링 내부에서 제공하는 라이브러리나 API는 확인하지 않고, 개발자 본인이 작성한 코드를 확인하는 용도이다.
다만, 내부 함수 등 추상화가 너무 잘되어있기 때문에 때에 따라서 내부도 디버깅하는 경우도 있다.
(그에 맞춰 활용할 수 있는 방법을 다시 확인하는 용도...?? 현재까지는 이렇게 이해)
- SYSOUT으로 다 찍어보는 것보다 훨씬 효율적임 (가시적으로 정확하게 보려면 이게 더 괜찮을 수 도 있지만, 짜피 SYSOUT은 배포 이후 다 주석 처리 혹은 지워야하기 때문에 불편... 로그만 쌓을 거면, log4j로 대체할 수 있지 않을까...??)
(실행 사진은 주말에 다시 코드 짜보면서 할래요...지금은 너무 졸립니다...)
5. IntelliJ에서 단축키
- F6 : 현재 브레이크 지점을 실행하고 다음 브레이크 포인트로 이동함
- F7 : 브레이크 지점의 함수 내부로 이동
- F8 : 현재 실행 지점에서 다음 줄로 이동하여 실행함
6. 느낀점...
- 이 전까지 개발을 공부하면서 디버깅에 대해 생각해 본적이 거의 없었다. 사실 이전에도 프로젝트를 진행하면서 값을 확인하기 위해 SYSOUT으로 다 찍어보고 배포 전 지우거나 주석처리 해서 불편했었는데 오늘 디버깅은 물론 활용방안의 중요성을 확인했다.
- 단순히 가독성이 좋은 코드, 유지 보수가 쉬운 코드만을 생각만 했는데, 디버깅이야 말로 이를 제일 뒷받침 해주는 방안이아닌가 싶다.
- 개발자라면 디버깅이라는 스킬을 꼭 익혀야겠다.
- 현재는 자유자재로 다루기는 힘들지만, 적극적으로 활용해서 익숙해지고자 한다.