참고 : http://itmining.tistory.com/37
[ 컴파일 오류와 콘솔 ]
콘솔창 (Window >> Console)
주석 / 경고 / 오류 필터
에러를 더블 클릭 >> 오류가 발생한 (스크립트의) 위치로 이동됨
[ Debug.Log를 이용한 디버깅 ]
[ ToString 메소드 재정의 ]
public override string ToString() { ... }
#if ~ #endif
#if SHOW_DEBUG ~Debug.Log(..);~~~ #endif
Edit >> Project Setting >> Player >> Scripting Define Symbols : SHOW_DEBUG
예약어가 여러개인 경우 세미콜론(;)으로 구분해서 추가
[ 시각적 디버깅 ]
[Gizmo]
OnDrawGizmos() : 이벤트 함수
Gizmos.color = Color.yellow; : 색깔 지정
Gizmos.DrawRay(정점, 크기) : 정점에서 크기만큼 직선 그림
Gizmos.DrawWireSphere(정점, 반지름): 구형태의 wireframe 기즈모 생성
[ 오류 기록 ]
Application 클래스를 이용하여 델리게이트를 통해 예외 통지를 받도록 함
System.IO.StreamWriter :
Application.RegisterLogCallback( HandleLog ) ; 오류가 발생했을 때, HandleLog로 내용이 전달될 수 있도록 함
[ 참고 ] 함수 포인터 & 델리게이트
[ 에디터 디버깅 ]
Inspector View의 탭 >> 오른쪽 마우스 클릭 >> Debug
Private 변수들도 볼 수 있음
Inspector 창의 속성들을 임의로 수정이 가능
실해 중에 변경했었던 내용들은 실행을 중지했을 때, 원상태로 돌아옴
변경된 값들을 그대로 적용하고 싶으면, Component의 오른쪽 마우스 클릭 Copy Component를 하고 실행을 멈춘 이후, Paste Component를 하면 됨
[ 프로파일러 ]
Window >> Profiler
CPU와 그래픽카드 등의 시스템 하드웨어에 어떻게 시간과 작업 부하가 분포되는지 탑다운 방식의 통계를 보여줌
[ Deep Profile ]
게임에 대한 자세한 정보(모든 스크립트 코드:모든 함수의 호출)를 알려주시만, 가급적 선택을 권하지 않음(무거운 애셋이나 코드로 에디터에 문제가 생길 여지가 많음: )
딥 프로파일링은 게임을 디자인하는 초기에 핵심 기능을 어떻게 구현할지 결정할 때 도움이 됨
[ 기본 모드 ] 사용 권장
[ CPU Usage ]
사각형 아이콘을 Check /Uncheck을 통해 원하는 부분만을 볼 수 있음
[ Hierarchy ]
현재 프레임의 성능을 계층적으로 볼 수 있음
[Total/Time ms ] : 함수에 소비된 프레임 시간의 비율을 표시(함수 안에서 다른 함수를 호출할 경우 그 시간도 포함) / 프레임의 절대 소요 시간
[Self/Self ms ] : (다른 함수를 호출할 경우 그 시간을 제외한) 함수의 순수한 수행시간을 표시
참고 : https://docs.unity3d.com/kr/current/Manual/Profiler.html
[ Momo Develop을 이용한 디버깅 ]
Break Point 설정
Run >> New BreakPoint (F9)
MonoDevelop에서 작업중인 Script를 Unity Editor와 연결해서 디버깅하기
Run >> Attach to Process
[ Watch / Locals 창 ]
Watch 창
유효한 지역 및 전역 변수의 값 확인 가능
고정적으로 확인하고 싶은 변수 추가
(우측마우스클릭) Add watch로 확인하고자 하는 변수 생성
Locals 창
지역 변수인 경우 Locals 창에서 손쉽게 확인 가능
Watch/Locals 창에서의 변수확인 뿐만아니라 쓰기 기능도 가능
[ 계속하기와 단계별 실행 ]
다음 Break Point로의 이동
Run >> Continue Debugging (F5)
Step Over : 다음줄에 Break Pointer가 있는 것처럼 운영
Run >> Step Over (F10)
Step Into : 함수 안쪽으로 들어가서 디버깅을 진행
Run >> Step In (F11)
Step Out : 함수를 호출한 곳의 다음 줄 부터 디버깅
Run >> Step Out(Shift + F11)
[ Call Stack(호출 스택) ]
최근에 실행된 함수가 최상단에 위치하고 이전에 실행된 함수가 그 밑에 역순으로 나열되어 최하단에는 최초로 호출된 함수가 표시됨
테스트 소스 링크 - CallStack.cs
[ Immediate 창 ]
Immediate 창이 활성화되는 시점에서 소스 코드의 일부분 값을 변경하거나 얻어올 수 있음
[ 조건 중단점 ]
중단점이 활성화되는 시점을 지정해주는 기능
반복문 안에서 특정 조건에만 확인하고 싶을 때 유용
[ 추적점 ]