체크포인트에서 개체 검사
학습 목표
- Apex 코드에 체크포인트를 설정합니다.
- 체크포인트 인스펙터를 사용해 메모리에 있는 개체를 분석합니다.
Apex 코드에 체크포인트 설정
우주선에서 시스템 오류 경고음이 울리기 시작하면 즉시 로그를 열어 무엇이 어디서 잘못되었는지 확인해야 합니다.
마찬가지로, Apex 코드가 오류를 초래하거나 코드에 성능 문제가 있거나 코드로 원하는 결과를 얻을 수 없으면 먼저 디버그 로그를 사용해 문제를 확인해야 합니다. 로그 전체를 한 줄씩 면밀히 살펴보는 일은 지루할 수 있습니다. 이럴 때 체크포인트가 유용합니다! 체크포인트는 Apex 코드를 실행하는 동안 특정 시점에 일어나는 일을 스냅샷으로 표시합니다.
Apex 코드에는 체크포인트를 5개까지 설정할 수 있습니다. Visualforce 마크업에는 체크포인트를 사용할 수 없습니다.
EmailMissionSpecialist
클래스에 체크포인트를 설정해 보겠습니다.-
File(파일) | Open(열기)을 선택하고
EmailMissionSpecialist
클래스를 엽니다. - Debug(디버그) | Change Log Levels(로그 수준 변경)를 선택합니다.
- 사용자의 일반 추적 설정 섹션에서 Add/Change(추가/변경)를 클릭합니다.
-
ApexCode
로그 수준을 FINEST로 설정합니다.
참고: 체크포인트를 설정하려면 모든 데이터 보기 사용자 권한이 필요합니다. 체크포인트를 사용해 결과를 생성하려면 익명 실행을 사용하여 코드를 실행하거나, DEVELOPER_LOG 추적 플래그를 자신에 대해 설정하세요. 추적 플래그의 로그 수준은 Apex의 경우 INFO 이상이어야 합니다. - 변경 사항을 저장하려면 Done(완료)을 클릭합니다.
- 로그 수준 변경 대화 상자를 종료하려면 Done(완료)을 클릭합니다.
소스 코드 편집기에 코드가 표시되면 왼쪽에서 줄 번호를 확인할 수 있습니다. inspectResults(results);
의 줄 번호를 클릭합니다. 체크포인트가 생성되었음을 나타내는 빨간 색 점(1)이 표시됩니다.
이제 코드를 실행하고 Checkpoints(체크포인트) 탭을 사용하여 분석할 수 있습니다.
Checkpoints(체크포인트) 탭
Checkpoints(체크포인트) 탭을 사용해 코드 실행 중에 문제가 발생하는 정확한 위치와 해당 지점의 개체 값을 확인할 수 있습니다. 이 코드를 실행하여 체크포인트의 실제 이용 사례를 확인해 보겠습니다.
Debug(디버그) | Open Execute Anonymous Window(익명 실행 창 열기)를 선택합니다. 다음 코드를 입력하고 실행합니다. Enter your email address를 자신의 이메일 주소로 바꿔야 합니다.
EmailMissionSpecialist em = new EmailMissionSpecialist(); em.sendMail('Enter your email address', 'Flight Path Change', 'Mission Control 123: Your flight path has been changed to avoid collision ' + 'with asteroid 2014 QO441.');
Apex 코드를 성공적으로 실행한 후 디버그 로그를 열고 Checkpoints(체크포인트) 탭을 클릭하여 결과를 확인하세요.
- 체크포인트 표에는 각 체크포인트의 네임스페이스, 클래스 및 줄 번호가 표시됩니다. 각 체크포인트가 생성된 날짜와 시간도 표시됩니다.
- 체크포인트 위치 표에는 파일 이름, 줄 번호, 그리고 선택한 체크포인트로 캡처된 이터레이션이 표시됩니다.
체크포인트 표에서 체크포인트를 두 번 클릭해 캡처된 결과를 체크포인트 인스펙터에서 확인하세요. 이제부터 재미가 시작됩니다!
체크포인트 인스펙터
- Heap(힙)—메모리에 있는 모든 개체를 코드에서 체크포인트가 실행된 줄에 표시합니다.
- Symbols(기호)—메모리에 있는 모든 기호를 트리 보기로 표시합니다.
Heap(힙) 탭
- 유형에서
Messaging.SingleEmailMessage
를 클릭합니다. - 인스턴스에서 이 개체 유형의 인스턴스를 아무거나 클릭합니다.
- 상태에서 개체의 필드와 필드의 값을 확인합니다.
Symbols(기호) 탭
Symbols(기호) 탭은 체크포인트에서 다양한 개체의 상태를 빠르고 간편하게 검토하는 방법입니다. 기호는 특정 개체를 가리키는 고유 이름입니다. 탭에는 메모리에 있는 모든 기호가 트리 보기를 사용하여 표시됩니다.
- 체크포인트 결과를 탭에서 지우려면 Debug(디버그) | Clear(지우기) | Checkpoint Results Panel(체크포인트 결과 패널)을 선택합니다.
- Debug(디버그) | Open Execute Anonymous Window(익명 실행 창 열기)를 선택합니다.
-
EmailMissionSpecialist
클래스를 다시 실행하되, 이번에는 testingemail 같은 잘못된 이메일 주소를 사용합니다.EmailMissionSpecialist em = new EmailMissionSpecialist(); em.sendMail('testingemail', 'Flight Path Change', 'Mission Control 123: Your flight path has been changed to avoid collision ' + 'with asteroid 2014 QO441.');
- 코드를 실행한 후 Checkpoints(체크포인트) 탭을 클릭합니다.
체크포인트가 설정된 줄 번호까지 코드가 실행되지 않았기 때문에 Checkpoints(체크포인트) 탭에 결과가 표시되지 않습니다.
-
File(파일) | Open(열기)을 선택하고
EmailMissionSpecialist
클래스를 엽니다. -
String[] toAddresses = new String[] {address}
왼쪽의 줄 번호를 클릭합니다. - Debug(디버그) | Clear(지우기) | Checkpoint Results Panel(체크포인트 결과 패널)을 선택합니다.
- Debug(디버그) | Open Execute Anonymous Window(익명 실행 창 열기)를 선택합니다.
- testingemail 같은 잘못된 이메일 주소를 사용해
EmailMissionSpecialist
클래스를 다시 실행합니다.EmailMissionSpecialist em = new EmailMissionSpecialist(); em.sendMail('testingemail', 'Flight Path Change', 'Mission Control 123: Your flight path has been changed to avoid collision ' + 'with asteroid 2014 QO441.');
- Checkpoints(체크포인트) 탭을 클릭합니다.
Checkpoints(체크포인트) 탭에 새 항목이 보입니다. 이제 체크포인트 인스펙터를 사용하여 메모리에 있는 개체를 분석할 수 있습니다.