Skip to main content

체크포인트에서 개체 검사

학습 목표

이 유닛을 완료하면 다음을 수행할 수 있습니다.
  • Apex 코드에 체크포인트를 설정합니다.
  • 체크포인트 인스펙터를 사용해 메모리에 있는 개체를 분석합니다.
참고

참고

한국어로 학습하시겠어요? Trailhead playground에서 한국어로 실습 과제를 시작하고, 괄호 안에 제공된 번역을 사용해 탐색해 보세요. 영어 데이터를 기반으로 실습 과제 검증이 이루어지므로 영문으로 표시된 값만 복사해 붙여 넣습니다. 한국어 조직에서 실습 과제를 통과하지 못한 경우, (1) 로캘을 미국을 바꾸고 (2) 여기에 제시된 지침에 따라 언어를 영어로 바꾼 후 (3) "Check Challenge(과제 확인)" 버튼을 눌러 다시 진행해 보세요.

원하는 언어로 Trailhead 사용하기 뱃지를 확인해 현지화된 Trailhead 경험을 활용하는 방법에 대해 자세히 알아보세요.

Apex 코드에 체크포인트 설정

우주선에서 시스템 오류 경고음이 울리기 시작하면 즉시 로그를 열어 무엇이 어디서 잘못되었는지 확인해야 합니다.

마찬가지로, Apex 코드가 오류를 초래하거나 코드에 성능 문제가 있거나 코드로 원하는 결과를 얻을 수 없으면 먼저 디버그 로그를 사용해 문제를 확인해야 합니다. 로그 전체를 한 줄씩 면밀히 살펴보는 일은 지루할 수 있습니다. 이럴 때 체크포인트가 유용합니다! 체크포인트는 Apex 코드를 실행하는 동안 특정 시점에 일어나는 일을 스냅샷으로 표시합니다.

Apex 코드에는 체크포인트를 5개까지 설정할 수 있습니다. Visualforce 마크업에는 체크포인트를 사용할 수 없습니다.

전에 만들었던 EmailMissionSpecialist클래스에 체크포인트를 설정해 보겠습니다.
  1. File(파일) | Open(열기)을 선택하고 EmailMissionSpecialist 클래스를 엽니다.
  2. Debug(디버그) | Change Log Levels(로그 수준 변경)를 선택합니다.
  3. 사용자의 일반 추적 설정 섹션에서 Add/Change(추가/변경)를 클릭합니다.
  4. ApexCode 로그 수준을 FINEST로 설정합니다.
    참고: 체크포인트를 설정하려면 모든 데이터 보기 사용자 권한이 필요합니다. 체크포인트를 사용해 결과를 생성하려면 익명 실행을 사용하여 코드를 실행하거나, DEVELOPER_LOG 추적 플래그를 자신에 대해 설정하세요. 추적 플래그의 로그 수준은 Apex의 경우 INFO 이상이어야 합니다.
  5. 변경 사항을 저장하려면 Done(완료)을 클릭합니다.
  6. 로그 수준 변경 대화 상자를 종료하려면 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(체크포인트) 탭을 클릭하여 결과를 확인하세요.

Checkpoints(체크포인트) 탭
  • 체크포인트 표에는 각 체크포인트의 네임스페이스, 클래스 및 줄 번호가 표시됩니다. 각 체크포인트가 생성된 날짜와 시간도 표시됩니다.
  • 체크포인트 위치 표에는 파일 이름, 줄 번호, 그리고 선택한 체크포인트로 캡처된 이터레이션이 표시됩니다.

체크포인트 표에서 체크포인트를 두 번 클릭해 캡처된 결과를 체크포인트 인스펙터에서 확인하세요. 이제부터 재미가 시작됩니다!

체크포인트 인스펙터

체크포인트 인스펙터에는 힙과 기호라는 두 개의 탭이 있습니다.
  • Heap(힙)—메모리에 있는 모든 개체를 코드에서 체크포인트가 실행된 줄에 표시합니다.
  • Symbols(기호)—메모리에 있는 모든 기호를 트리 보기로 표시합니다.

Heap(힙) 탭

Heap(힙) 탭에는 유형 패널처럼 디버깅에 아주 유용한 패널이 몇 개 있습니다. 이 패널에는 인스턴스화된 개체 수가 표시되고 개체가 사용한 메모리가 바이트 단위로 표시됩니다. 설정한 체크포인트로 캡처된 세부 정보를 살펴보겠습니다.
  1. 유형에서 Messaging.SingleEmailMessage를 클릭합니다.
  2. 인스턴스에서 이 개체 유형의 인스턴스를 아무거나 클릭합니다.
  3. 상태에서 개체의 필드와 필드의 값을 확인합니다.
체크포인트 인스펙터의 Heap(힙) 탭

Symbols(기호) 탭

Symbols(기호) 탭은 체크포인트에서 다양한 개체의 상태를 빠르고 간편하게 검토하는 방법입니다. 기호는 특정 개체를 가리키는 고유 이름입니다. 탭에는 메모리에 있는 모든 기호가 트리 보기를 사용하여 표시됩니다.

체크포인트 인스펙터의 Symbols(기호) 탭
사령관은 시스템이 원활하게 가동 중인지 확인해야 함은 물론 오류도 추적해야 합니다. 어떻게 체크포인트 인스펙터로 코드를 더 잘 이해할 수 있는지 알아보겠습니다.
  1. 체크포인트 결과를 탭에서 지우려면 Debug(디버그) | Clear(지우기) | Checkpoint Results Panel(체크포인트 결과 패널)을 선택합니다.
  2. Debug(디버그) | Open Execute Anonymous Window(익명 실행 창 열기)를 선택합니다.
  3. 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.');
  4. 코드를 실행한 후 Checkpoints(체크포인트) 탭을 클릭합니다.

체크포인트가 설정된 줄 번호까지 코드가 실행되지 않았기 때문에 Checkpoints(체크포인트) 탭에 결과가 표시되지 않습니다.

Checkpoints(체크포인트) 탭 결과
코드가 testingemailerror까지 실행되기 전에 새 체크포인트에서 정보를 캡처할 수 있게 코드의 더 앞쪽에 체크포인트를 추가해 보겠습니다.
  1. File(파일) | Open(열기)을 선택하고 EmailMissionSpecialist 클래스를 엽니다.
  2. String[] toAddresses = new String[] {address} 왼쪽의 줄 번호를 클릭합니다.
  3. Debug(디버그) | Clear(지우기) | Checkpoint Results Panel(체크포인트 결과 패널)을 선택합니다.
  4. Debug(디버그) | Open Execute Anonymous Window(익명 실행 창 열기)를 선택합니다.
  5. 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.');
  6. Checkpoints(체크포인트) 탭을 클릭합니다.

Checkpoints(체크포인트) 탭에 새 항목이 보입니다. 이제 체크포인트 인스펙터를 사용하여 메모리에 있는 개체를 분석할 수 있습니다.

Checkpoints(체크포인트) 탭 결과
Salesforce 도움말에서 Trailhead 피드백을 공유하세요.

Trailhead에 관한 여러분의 의견에 귀 기울이겠습니다. 이제 Salesforce 도움말 사이트에서 언제든지 새로운 피드백 양식을 작성할 수 있습니다.

자세히 알아보기 의견 공유하기