[Java] 프로그래밍과 디버깅
목차
1. 프로그램
2. 프로그래밍 vs 코딩
3. 모의 프로그램
4. 이클립스 디버깅
프로그램(program)
· 시간에 따라 실행할 작업들의 순서
· 컴퓨터를 비롯한 시스템에서 특정 작업을 수행하는 명령어들의 집합
public class Program {
public static void main(String[] args) {
System.out.println(1);
System.out.println(2);
System.out.println(3);
}
}
위의 예시는 화면에 1, 2, 3을 순서대로 출력하는 작업을 수행한다.
3줄이 아니라 1억 줄에 이르는 작업을 수행한다면?
실수하면 안되는 작업이라면?
시간이 오래 걸리는 작업이라면?
이때, 컴퓨터 프로그래밍으로 사람이 잘 못하는 일을 기계에게 위임해서 자동화할 수 있다.
프로그래밍 vs 코딩
프로그래밍(programming)
· 컴퓨터의 프로그램을 작성하는 일
· 특정 목적을 달성하기 위해 설계된 알고리즘을 프로그래밍 언어를 사용하여 구체적인 프로그램으로 작성하는 과정
· 문제 분석과 프로그램의 설계 및 번역, 실행 과정을 거쳐 결과를 얻고 테스트 및 디버그하는 전 과정
코딩(coding)
· 프로그래밍 안에서 코드, 즉 명령을 작성하는 것
· 작업의 흐름에 따라 프로그래밍 언어의 명령문을 써서 프로그램을 작성하는 일
· 우리가 이해하는 언어에서 컴퓨터가 이해할 수 있는 언어(java, python 등)로 바꾸는 것
=> 프로그래밍은 프로그램을 작성하는 과정이고, 그 과정에 코딩이 포함되어 있다.
IoT 모의 프로그램 만들기
생활코딩님 https://github.com/egoing/java-iot 에서 org.opentutorials.iot 패키지 다운 후 프로젝트에 붙여 넣기
집에 갈 때 반복적으로 일어났던 작업을 자동화하는 프로그램을 만들어 보자.
엘리베이터를 1층으로 부르고, 현관문 보안을 해제하고, 집에 들어오면 불이 켜져 있는 작업을 수행해야 한다.
import org.opentutorials.iot.Elevator;
import org.opentutorials.iot.Security;
import org.opentutorials.iot.Lighting;
public class OkJavaGoInHome {
public static void main(String[] args) {
String id="JAVA APT 507";
//Elevator call
Elevator myElevator=new Elevator(id);
myElevator.callForUp(1);
//Security off
Security mySecurity=new Security(id);
mySecurity.off();
//Light on
Lighting hallLamp=new Lighting(id+"/Hall Lamp");
hallLamp.on();
Lighting floorLamp=new Lighting(id+"/Floor Lamp");
floorLamp.on();
}
}
실행 결과
· import 이용 -> org.opentutorials.Elevator를 Elevator로 입력 가능
· "JAVA APT 507" 같이 반복적으로 사용되는 데이터는 변수로 지정
이클립스 디버깅 이용하기
디버깅(debugging)
· 프로그램의 오류를 찾아내고 고치는 작업
1) 브레이크 포인트(breakpoint) 지정
· 라인 번호 왼쪽을 더블클릭 or 우클릭 -> Toggle Breakpoint (Ctrl+Shift+B)
· 7번 줄에 브레이크 포인트 지정
· 브레이크 포인트를 지정한 상태에서 디버거 실행 -> 브레이크 포인트까지 코드가 실행되고 일시정지
· 브레이크 포인트를 다시 더블클릭 -> 브레이크 포인트 해제
2) 디버그 모드로 실행(F11)
· 상단의 메뉴 중 벌레 모양 버튼을 클릭하면 디버거 실행 가능
· Step Over(F6) - 한 라인씩 실행
· Resume(F8) - 다음 브레이크 포인트까지 실행, 더 이상 브레이크 포인트가 없다면 끝까지 실행
· 우측의 variables 탭에서 변수와 객체의 상태 확인 가능
· 변수 위에 마우스 커서를 올려서도 확인 가능
· Expressions 탭에서 변수 이름이나 수행해보고 싶은 명령어를 입력해 결과 확인 가능
3) 자세한 실행 과정 보기
· Step Into(F5) - 한 라인씩 실행(메소드를 포함한 라인을 만나면 메소드 내부로 진입)
- myElevetor의 callForUp 메소드가 실행되는 줄에서 Step Into 버튼 클릭
- Elevator 객체의 callForUp 메소드의 코드가 실행되는 과정을 확인 가능
· Step Return(F7) - 현재 메소드에서 바로 리턴 후 원래 코드로 돌아감
· Terminate(Ctrl+F2) - 디버깅 종료