Salesforce のデバッグ方法

  1. デバッグログの有効化: Salesforce のセットアップで、デバッグログを有効にすることができます。デバッグログは、Apex コードやトリガーの実行情報、SOQL クエリ、DML 操作などの詳細な情報を提供します。デバッグログは開発者コンソールまたはログのリストビューからアクセスできます。

  2. System.debug メソッドの使用: Apex コード内で System.debug メソッドを使用して変数の値やメッセージを出力することができます。これにより、実行中のコードのステップバイステップのトレースが可能になります。

  3. エクセプションのキャッチと処理: Apex コード内で例外をキャッチして、エラーメッセージや関連するデータを取得し、適切な処理を行うことができます。例外の情報は、デバッグログやメール通知などの方法で記録・表示できます。

  4. 開発者コンソールの使用: 開発者コンソールは Salesforce の統合開発環境(IDE)であり、Apex コードの実行、デバッグログの表示、SOQL クエリの実行などが可能です。また、開発者コンソールには便利なデバッグツールやログ監視ツールも備わっています。

デバッグログレベル

Salesforce では、デバッグログを有効にする際に、異なるデバッグログレベルを選択することができます。以下に、一般的なデバッグログレベルを示します。

  1. None: デバッグログは無効化されます。このレベルでは、デバッグログは生成されず、保存されません。

  2. Error: エラーメッセージだけが記録されます。Apex コード内で発生した例外やエラーに関連する情報がログに表示されます。

  3. Warn: エラーと警告メッセージが記録されます。警告は、実行中に問題が発生したが、処理は続行される場合に記録されます。

  4. Info: インフォメーションメッセージも含めて記録されます。このレベルでは、Apex コードの実行情報や SOQL クエリの詳細な情報などがログに表示されます。

  5. Debug: デバッグログの最も詳細なレベルです。エラー、警告、インフォメーションメッセージに加えて、さらに詳細なトレース情報がログに含まれます。
    このレベルでは、Apex コード内のすべてのステップや変数の値などが表示されます。

Apex Replay Debugger

Apex Replay Debugger の設定

  1. VS Code で Salesforce DX プロジェクトを開きます。
  2. Salesforce DX プロジェクトにまだ .vscode/launch.json ファイルパスを設定した JSON ファイルがない場合は、そのファイル (と必要に応じてフォルダ) を作成します。
  3. .vscode/launch.json ファイルを開きます。
  4. Launch Apex Replay Debugger という設定を追加します。
{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch Apex Replay Debugger",
      "type": "apex-replay",
      "request": "launch",
      "logFile": "${command:AskForLogFileName}",
      "stopOnEntry": true,
      "trace": true
    }
  ]
}

ブレークポイントとチェックポイントの設定

生デバッグ用のデバッグログを生成する前に、ブレークポイントとチェックポイントを設定します。

  1. 行ブレークポイントを設定するには、.cls または .trigger ファイルを開き、行番号の左側にある列をクリックします。

  2. 行ブレークポイントが提供する量よりも情報が多い場合は、チェックポイントを追加します。コード行の実行時にヒープダンプを取得するチェックポイントを最大 5 つ設定できます。ローカル変数、静的変数、トリガコンテキスト変数はすべて、チェックポイントに役立つ情報があります。トリガコンテキスト変数はログに存在せず、チェックポイント場所でのみ使用できます。
    Visual Studio Code で、チェックポイントはブレークポイントの一種です。ログからの再生デバッグ時に、チェックポイントはブレークポイントのように機能します。Apex Replay Debugger セッションを開始する前に、チェックポイントを設定してアップロードします。

    1. Apex クラスまたはトリガの最大 5 つの行にチェックポイントを設定します。
    2. チェックポイントを設定するコード行をクリックします。
    3. コマンドパレットを開きます (Windows、Linux は Ctrl+Shift+P キー、macOS は Cmd+Shift+P キーを押します)。
    4. [SFDX: Toggle Checkpoint (SFDX: チェックポイントを切り替え)] を実行します。
      • または、行番号の左側の溝を右クリックして、条件付きブレークポイントの追加 (Add Conditional Breakpoint) | 式 (Expression) を選択し、式を ブレークポイント に設定します。
      • または、既存のブレークポイントをチェックポイントに変換するには、そのブレークポイントを右クリックして、 ブレークポイントの編集 (Edit Breakpoint) | 式 (Expression) を選択します。 式を チェックポイント に設定します。
        チェックポイントを組織にアップロードしてヒープダンプ情報を収集するには、コマンドパレットを開き、[SFDX: Update Checkpoints in Org (SFDX: 組織のチェックポイントを更新)] を実行します。
    5. チェックポイントを組織にアップロードしてヒープダンプ情報を収集するには、コマンドパレットを開き、[SFDX: Update Checkpoints in Org (SFDX: 組織のチェックポイントを更新)] を実行します。

スクラッチ組織またはデフォルトの開発組織の Apex Replay Debugger セッションの設定

スクラッチ組織、または Sandbox あるいは VS Code でデフォルト組織として設定した DE 組織で問題をデバッグする場合は、再生するデバッグログを生成するツールが用意されています。ログを有効にして問題を再現し、組織からデバッグログを取得したうえで、デバッグセッションを開始します。

  1. ログを有効にするには、VS Code から、コマンドパレットを開き (Windows、Linux は Ctrl+Shift+P キー、macOS は Cmd+Shift+P キー)、[SFDX: Turn On Apex Debug Log for Replay Debugger (SFDX: Replay Debugger の Apex デバッグログをオン)] を実行します。

  2. 組織のデバッグログのリストを取得するには、[SFDX: Get Apex Debug Logs (SFDX: Apex デバッグログを取得)] を実行します。

  3. 再生するログをクリックします。VS Code にログがダウンロードされて開きます。

  4. [SFDX: Launch Apex Replay Debugger with Current File (SFDX: 現在のファイルを使用して Apex Replay Debugger を起動)] を実行します。

参考