tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Visual Studio CodeのApex Replay Debuggerを試してみました

Trailheadを見ながらVisual Studio CodeのApex Replay Debuggerを試してみました。

Find and Fix Bugs with Apex Replay Debugger | Salesforce Trailhead

Apex Replay Debuggerについて

Apex Replay Debuggerとは次のようなツールです。

Apex Replay Debugger は、Visual Studio Code をクライアントとして使用してデバッグログを検査することにより、Apex コードをデバッグできる無料のツールです。

事前準備

このツールを使用するにはSalesforce CLIが必要です。「@salesforce/cli/2.6.7 darwin-arm64 node-v20.5.1」のバージョンで作業しています。


Salesforce開発に必要になるのでインストール済みと思いますが、Visual Stdaio Codeのsalesforce extension pack拡張子も必要となります。


Javaも必要です。データローダを動かすのに必要になったりするのにインストールできている気がします。(「java -version」が動けば準備できていると思う)


Salesforce DX プロジェクトを作成。開発環境を用意します。この辺は普通の開発手順のとおり。Salesforce組織の認証とか必要な操作を行ってApex開発できる状態にします。

Apexクラスを用意

動作確認用にApexクラスを作成します。処理内容に重要な意味はありませんが、スムーズに進められるようにTrailhead上に公開されているのでそのとおりに用意します。


テストクラスも用意します。


テストクラスのApexテストを実行します。この時点ではテスト失敗となる状態です。

Apex Replay Debuggerをつかったデバッグ操作

AccountService.clsファイルを開き、「return newAcct;」の行にブレークポイントを配置します。赤丸がブレークポイントです。


コマンド パレットでSFDX: Toggle Checkpointと操作する方法もあるみたいです。今回はTrailheadの手順どおりに進めるのでこのコマンドパレットからの手順でちゃんとやります。


ブレークポイントを配置できたら「SFDX: Update Checkpoints in Org」を実行します。これをやることで「Apex コードの実行時にヒープダンプが収集されるように、Salesforce にチェックポイントを通知する必要があります。Apex コードを変更するかチェックポイントを切り替える場合は、このコマンドを再度実行して同期を維持します。」という感じで動作するようになるようです。


ちなみにブレークポイントの配置は好きなだけできますが、一度に設定できるチェックポイントは5つまでとのことです。必要な分だけ設定して使用するようにします。



次にコマンドパレットから「SFDX: Turn On Apex Debug Log for Replay Debugger」を実行します。これをやらないとログが記録されません。


このコマンドの詳細については次のとおりです。

これにより、30 分間の再生可能なデバッグ ログを生成するトレース フラグが作成されます。[デバッグ ログ] ページの [セットアップ] で期間を変更できます。


正常に実行されればこのように確認できます。


続いてApexテストを再度実行します。Trailheadの手順のとおりコマンドパレットから実行します。


次にApexデバッグログを取得します。


こんな感じで対象ログを選択して取得します。


実行すると「.sfdx/tools/debug/logs」のディレクトリにログファイルが出力されます。


ログファイルの任意の行をクリックして「SFDX: Launch Apex Replay Debugger with Current File」を選択します。すると、Visual Studio Code によって [デバッグ] サイドバーが開き、コードのステップ実行を開始できるようになります。


画面の上側にデバッグ操作用のメニューが表示されます。これで処理を1行ずつ進めたりできます。



デバッグサイドバーは虫と矢印みたいなアイコンです。一度閉じた場合も何度でも開けます。処理を進めながら変数の値をチェックしたりできます。


デバッグメニューの一番左側のアイコン「▶」をクリックするとブレークポイントまで移動します。これでその処理の時点での変数の情報を参照できました。


こんな感じで処理が想定どおりに動いていない部分を見つけるという感じでTrailheadで説明がありました。


ここが間違っていて・・


こう直す。


これでTrailheadのチャレンジもクリアできたので正しく操作できたと思います。

まとめ

以上がTrailheadで紹介されていたVisual Studio CodeのApex Replay Debuggerの使い方です。開発者コンソールとデバッグログの機能でもけっこうなんとかなりますが、ブレークポイントを設置してそのときの変数の値などを参照しながらデバッグできるので便利なツールでした。