Salesforce のデバッグ方法
-
デバッグログの有効化: Salesforce のセットアップで、デバッグログを有効にすることができます。デバッグログは、Apex コードやトリガーの実行情報、SOQL クエリ、DML 操作などの詳細な情報を提供します。デバッグログは開発者コンソールまたはログのリストビューからアクセスできます。
-
System.debug メソッドの使用: Apex コード内で System.debug メソッドを使用して変数の値やメッセージを出力することができます。これにより、実行中のコードのステップバイステップのトレースが可能になります。
-
エクセプションのキャッチと処理: Apex コード内で例外をキャッチして、エラーメッセージや関連するデータを取得し、適切な処理を行うことができます。例外の情報は、デバッグログやメール通知などの方法で記録・表示できます。
-
開発者コンソールの使用: 開発者コンソールは Salesforce の統合開発環境(IDE)であり、Apex コードの実行、デバッグログの表示、SOQL クエリの実行などが可能です。また、開発者コンソールには便利なデバッグツールやログ監視ツールも備わっています。
デバッグログレベル
Salesforce では、デバッグログを有効にする際に、異なるデバッグログレベルを選択することができます。以下に、一般的なデバッグログレベルを示します。
-
None
: デバッグログは無効化されます。このレベルでは、デバッグログは生成されず、保存されません。 -
Error
: エラーメッセージだけが記録されます。Apex コード内で発生した例外やエラーに関連する情報がログに表示されます。 -
Warn
: エラーと警告メッセージが記録されます。警告は、実行中に問題が発生したが、処理は続行される場合に記録されます。 -
Info
: インフォメーションメッセージも含めて記録されます。このレベルでは、Apex コードの実行情報や SOQL クエリの詳細な情報などがログに表示されます。 -
Debug
: デバッグログの最も詳細なレベルです。エラー、警告、インフォメーションメッセージに加えて、さらに詳細なトレース情報がログに含まれます。
このレベルでは、Apex コード内のすべてのステップや変数の値などが表示されます。
Apex Replay Debugger
Apex Replay Debugger の設定
- VS Code で Salesforce DX プロジェクトを開きます。
- Salesforce DX プロジェクトにまだ
.vscode/launch.json
ファイルパスを設定した JSON ファイルがない場合は、そのファイル (と必要に応じてフォルダ) を作成します。 .vscode/launch.json
ファイルを開きます。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
}
]
}
ブレークポイントとチェックポイントの設定
生デバッグ用のデバッグログを生成する前に、ブレークポイントとチェックポイントを設定します。
-
行ブレークポイントを設定するには、.cls または .trigger ファイルを開き、行番号の左側にある列をクリックします。
-
行ブレークポイントが提供する量よりも情報が多い場合は、チェックポイントを追加します。コード行の実行時にヒープダンプを取得するチェックポイントを最大 5 つ設定できます。ローカル変数、静的変数、トリガコンテキスト変数はすべて、チェックポイントに役立つ情報があります。トリガコンテキスト変数はログに存在せず、チェックポイント場所でのみ使用できます。
Visual Studio Code で、チェックポイントはブレークポイントの一種です。ログからの再生デバッグ時に、チェックポイントはブレークポイントのように機能します。Apex Replay Debugger セッションを開始する前に、チェックポイントを設定してアップロードします。- Apex クラスまたはトリガの最大 5 つの行にチェックポイントを設定します。
- チェックポイントを設定するコード行をクリックします。
- コマンドパレットを開きます (Windows、Linux は Ctrl+Shift+P キー、macOS は Cmd+Shift+P キーを押します)。
- [SFDX: Toggle Checkpoint (SFDX: チェックポイントを切り替え)] を実行します。
- または、行番号の左側の溝を右クリックして、条件付きブレークポイントの追加 (Add Conditional Breakpoint) | 式 (Expression) を選択し、式を ブレークポイント に設定します。
- または、既存のブレークポイントをチェックポイントに変換するには、そのブレークポイントを右クリックして、 ブレークポイントの編集 (Edit Breakpoint) | 式 (Expression) を選択します。 式を チェックポイント に設定します。
チェックポイントを組織にアップロードしてヒープダンプ情報を収集するには、コマンドパレットを開き、[SFDX: Update Checkpoints in Org (SFDX: 組織のチェックポイントを更新)] を実行します。
- チェックポイントを組織にアップロードしてヒープダンプ情報を収集するには、コマンドパレットを開き、[SFDX: Update Checkpoints in Org (SFDX: 組織のチェックポイントを更新)] を実行します。
スクラッチ組織またはデフォルトの開発組織の Apex Replay Debugger セッションの設定
スクラッチ組織、または Sandbox あるいは VS Code でデフォルト組織として設定した DE 組織で問題をデバッグする場合は、再生するデバッグログを生成するツールが用意されています。ログを有効にして問題を再現し、組織からデバッグログを取得したうえで、デバッグセッションを開始します。
-
ログを有効にするには、VS Code から、コマンドパレットを開き (Windows、Linux は Ctrl+Shift+P キー、macOS は Cmd+Shift+P キー)、[SFDX: Turn On Apex Debug Log for Replay Debugger (SFDX: Replay Debugger の Apex デバッグログをオン)] を実行します。
-
組織のデバッグログのリストを取得するには、[SFDX: Get Apex Debug Logs (SFDX: Apex デバッグログを取得)] を実行します。
-
再生するログをクリックします。VS Code にログがダウンロードされて開きます。
-
[SFDX: Launch Apex Replay Debugger with Current File (SFDX: 現在のファイルを使用して Apex Replay Debugger を起動)] を実行します。