# Debugging (Breakpoint)

## 중단점을 이용한 디버깅

**중단점**은 테스트 혹은 디버깅을 할 때 활용할 수 있는 기능이에요. 🔍

확인이 필요한 스크립트 로직에 중단점을 추가하면, 플레이 도중에 해당 로직에 멈춘 상태에서 관련된 값들을 확인해볼 수 있어요.

**중단점의 자세한 활용 방법**은 아래 내용을 확인해주세요. 😉

## 중단점을 추가하는 방법

Script Editor에서 원하는 라인의 왼쪽 공간을 클릭하면, 중단점🔴 을 추가할 수 있어요.

* 중단점 추가/삭제 단축키 : **Pause/Break**

<figure><img src="https://1068493773-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lxtl0ocR1cA2G25jLXa%2Fuploads%2FPN7F44ywWHNKsJL8sjCk%2F01.png?alt=media&#x26;token=9003342e-c53a-4cf5-8807-14da3c229074" alt=""><figcaption></figcaption></figure>

**중단점을 추가할 때는 다음 사항에 유의해주세요.**

* 스크립트의 첫 번째 라인에는 중단점을 추가할 수 없어요. 😣

![](https://1068493773-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lxtl0ocR1cA2G25jLXa%2Fuploads%2Fb5c50XwSpCoCDrB66Hko%2Fimage.png?alt=media\&token=2d4928ce-4fcf-4c7f-990e-15744c88542d)

* 내용 없이 비어있는 라인에는 중단점을 추가할 수 없어요. 🤔

![](https://1068493773-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lxtl0ocR1cA2G25jLXa%2Fuploads%2FoHjuvZ676xpkcf4VC9qT%2Fimage.png?alt=media\&token=8c5fa4e1-502e-4c54-a97d-083fece6e0a6)

* 중단점과 같은 라인에 있는 코드는, \
  중단된 시점에서 아직 처리되지 않은 상태라는 것을 기억해주세요. 💭

![](https://1068493773-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lxtl0ocR1cA2G25jLXa%2Fuploads%2FiQ0ZLZUOC3az9MMhDrez%2Fimage.png?alt=media\&token=aac85879-1c5d-4bf2-8586-33a140d9c18b)

###

## 중단점을 테스트하는 방법

중단점을 추가한 상태에서, 테스트 플레이를 시작해볼게요. ▶️

![](https://1068493773-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lxtl0ocR1cA2G25jLXa%2Fuploads%2FbccG1Ix3c7YzOhdbN0Qm%2Fimage.png?alt=media\&token=d8ee7530-0515-48c0-92fb-4c2aacc3b042)

플레이를 진행하던 도중, 중단점에 해당하는 라인에 도달하면 테스트 플레이가 멈춰요. ⏸️

오브젝트의 Collision을 처리하는 함수 내부에 중단점을 추가했다면, \
캐릭터가 Collision에 닿았을 때 플레이가 멈추게 돼요.

![](https://1068493773-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lxtl0ocR1cA2G25jLXa%2Fuploads%2F14z5Q8DQx2GtuJcP2tOA%2Fimage.png?alt=media\&token=f46b5a19-1a04-4da6-99db-904282790c01)

## 중단점에서 변수 정보를 확인하는 방법

중단점이 추가된 라인에 포함된 함수 혹은 코드들은 **스택**이라고 해요.

현재 멈춰있는 **스택**에 대한 정보는, **Player Output**과 **Script Editor**에서 확인할 수 있어요. 👁️

![](https://1068493773-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lxtl0ocR1cA2G25jLXa%2Fuploads%2FFcgBxWpr3tTdRVQmU3tz%2Fimage.png?alt=media\&token=42f8b5c9-e760-44fc-8219-524a1893cff8)

### **Breakpoint 탭**

**추가한 중단점들을 한눈에 확인**할 수 있는 탭이에요.

왼쪽 체크 박스☑를 클릭하면, 해당하는 중단점을 사용할지 말지 결정할 수 있어요.

![](https://1068493773-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lxtl0ocR1cA2G25jLXa%2Fuploads%2FJIvLk3iRISSemvqBv80D%2Fimage.png?alt=media\&token=e2319b8b-ff10-4233-81b4-390c555206bf)

Script Editor에 있는 Breakpoint 탭에서는 원하는 리스트를 더블 클릭🖱️하면, 해당 중단점이 있는 라인으로 이동할 수 있어요.

![](https://1068493773-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lxtl0ocR1cA2G25jLXa%2Fuploads%2FcmTYEaquVspMkZFPwu2m%2Fimage.png?alt=media\&token=4461d721-0cf2-4b5a-af76-2f9c33f9ecc6)

### **CallStack 탭**

중단점에 도달했을 때, **어떤 스크립트 및 몇 번째 라인의 중단점인지 확인**✅할 수 있는 탭이에요.

![](https://1068493773-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lxtl0ocR1cA2G25jLXa%2Fuploads%2Fr25BhuXRDbpDcNu6K2LW%2Fimage.png?alt=media\&token=2870b978-0843-4f4f-95ff-9a62a5d52997)

함수 내부에 있는 라인에서 중단된 경우, 해당 함수의 이름과 함수가 호출된 라인도 표시해요.

![](https://1068493773-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lxtl0ocR1cA2G25jLXa%2Fuploads%2FSx7PQs75kMS2OuNsj1eA%2Fimage.png?alt=media\&token=3a50ce5a-ae05-49cc-9a57-53021dabcd8a)

### **Watch 탭**

중단점에 도달했을 때, 값을 **확인하고 싶은 변수를 추가**할 수 있는 탭이에요.

Local 및 Global로 선언된 변수, Player나 Cube 같은 객체에 저장된 변수를 추적할 수 있어요.

![](https://1068493773-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lxtl0ocR1cA2G25jLXa%2Fuploads%2FkVO53SjLqHUkiuzb9uSI%2Fimage.png?alt=media\&token=1726cfa8-0795-47e0-ad93-a4ba05be64d2)

추적하고 싶은 **변수 이름을 작성 ✏️**한 후에, **Add 버튼을 클릭**하면 추가할 수 있어요.

![](https://1068493773-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lxtl0ocR1cA2G25jLXa%2Fuploads%2FS2pCsEVBNFO7J0bfnl9K%2Fimage.png?alt=media\&token=e8492c5f-c828-4666-ba37-d79c807fb6c1)

해당 변수에 아직 처리된 정보가 없다면, 회색🤍으로 표시해요.

![](https://1068493773-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lxtl0ocR1cA2G25jLXa%2Fuploads%2Fh6ah4gTf4f3cjiUF0xMb%2Fimage.png?alt=media\&token=c7d18590-30ef-4713-81a7-bbc82605a98e)

**Watch 및 Auto 탭**에 붉은색<mark style="color:red;">❤</mark>으로 표시되는 값은, **해당 중단점에서 변경된 값**임을 의미해요.

![](https://1068493773-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lxtl0ocR1cA2G25jLXa%2Fuploads%2FBuNODoGwO1nu3TqtRVsx%2Fimage.png?alt=media\&token=03ec65c9-be1d-43d4-b59d-8bc7f67ac7d0)

### **Auto 탭**

중단점에 도달했을 때, **현재 스택에 있는 변수**를 자동으로 표시해주는 탭이에요. 🖨️

변수 이름(Name)과 해당 변수에 저장된 값(Value), 그리고 자료형(Type)을 확인할 수 있어요. 👀

![](https://1068493773-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lxtl0ocR1cA2G25jLXa%2Fuploads%2FFAxmI1eeghGhdLlNQsk4%2Fimage.png?alt=media\&token=19350a1c-0041-46a0-8a1a-83166779d66b)

월드 트리에 있는 객체를 변수에 저장했다면, 저장된 변수 이름과 객체의 실제 이름을 같이 표시해요.

![](https://1068493773-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lxtl0ocR1cA2G25jLXa%2Fuploads%2FHRX9MUU6qDFZuvp9n8sn%2Fimage.png?alt=media\&token=2367a292-ebad-429f-8ade-7fc5b13566d5)

스크립트에 Table 변수를 추가했다면, **Auto 탭**에서 해당 Table의 속성을 확인할 수 있어요. 아래에서 Table의 속성이 어떻게 출력되는지 참고해주세요. 😊

비어 있는 Table의 경우에는, 다음과 같이 출력해요.

![](https://1068493773-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lxtl0ocR1cA2G25jLXa%2Fuploads%2FcHdotOUnKTe83PCoVbqt%2Fimage.png?alt=media\&token=8f831397-3336-45db-b5ed-ab2c0aeb8e42)

Table 내부에 값이 있을 경우, 다음과 같이 출력해요.

![](https://1068493773-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lxtl0ocR1cA2G25jLXa%2Fuploads%2F2LWEW6uiWy0J00zvUmSY%2Fimage.png?alt=media\&token=662a945d-ad39-4578-87ab-1cb669895244)

Table 변수에 Key와 Value 형태로 저장된 경우, 다음과 같이 출력해요.

![](https://1068493773-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lxtl0ocR1cA2G25jLXa%2Fuploads%2F7aBoq7DnRsRXAFejVqwU%2Fimage.png?alt=media\&token=83712ab0-8378-41f4-9b72-8b0cf31aa979)

## 중단점에서 사용할 수 있는 단축키

현재 중단되어 있는 스택의 정보를 충분히 확인했다면, \
다음 라인의 정보를 확인하거나 멈춘 플레이를 다시 이어서 진행할 수 있어요.&#x20;

아래 작성된 단축키를 활용해보세요. ⌨️

<table><thead><tr><th width="150">단축키</th><th width="596.4285714285713">설명</th></tr></thead><tbody><tr><td>1</td><td>1번 키를 누르면, <strong>이어서 테스트 플레이를 진행</strong>해요. <br>다음 중단점을 만나면 다시 플레이가 멈춰요.</td></tr><tr><td>2</td><td>2번 키를 누르면, 현재 중단점의 바로 다음 라인으로 이동해서 중단해요. <br>다음 라인에서 <strong>호출된 함수를 만난다면, 무시하고 그 다음 라인으로 이동</strong>해요.</td></tr><tr><td>3</td><td>3번 키를 누르면, 마찬가지로 현재 중단점의 바로 다음 라인으로 이동해서 중단해요. 단, 다음 라인에서 <strong>호출된 함수를 만난다면, 해당 함수 내부에 있는 코드로 이동</strong>해요.</td></tr><tr><td>4</td><td>현재 중단된 라인이 함수 내부에 있을 경우에, 4번 키를 누르면 해당 <strong>함수를 빠져나올 수 있어</strong>요. 빠져나온 함수를 호출한 라인의 바로 다음 라인으로 이동해서 중단해요.</td></tr></tbody></table>

## 중단점 사용 시, 유의 사항

변수 정보가 1줄밖에 없는 코드에 중단점을 추가한다면, \
중단되었을 때 해당 변수는 Auto 탭에 추가되지 않고, Watch 탭에서도 추적할 수 없어요.

![](https://1068493773-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lxtl0ocR1cA2G25jLXa%2Fuploads%2Fdji4gmUphXYszwYmCctt%2Fimage.png?alt=media\&token=02121b77-a612-46f0-9eeb-64a34e3d7673)

Mesh, Collider 처럼 기본으로 속성을 가지고 있는 객체가 현재 스택에 포함된다면, \
Auto 탭에서 각 객체의 하위에 속성들을 자동으로 출력해요. 🖨️

해당하는 속성들의 값은 정확하게 출력되지 않을 수도 있다는 점을 유의해주세요. 😥

![](https://1068493773-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lxtl0ocR1cA2G25jLXa%2Fuploads%2FyFEtGDsnpGkjvcm76mMN%2Fimage.png?alt=media\&token=439b69a4-9267-4847-b8c2-340f61f2e3be)

멀티플레이👥 테스트를 할 때, 중단점에 도달하면, 첫번째 플레이어의 화면만 멈춰요.

해당하는 스택의 정보 또한 첫번째 플레이어👤에서만 추적할 수 있다는 점을 기억해주세요.
