shuhelohelo’s blog

Xamarin.Forms多めです.

Client-side Blazorでデバッグする方法

Server-side BlazorなどServer側で動作する部分についてはVisual Studio上でデバッグできます。

では、Client-side Blazorのデバッグはどうするかというと、もちろんブラウザのデバッグツールを使います。 ChromeならばCtrl+Shit+Iで出てくる開発ツールです。

まずはClient-side Blazorプロジェクトを作成します。 f:id:shuhelohelo:20190506153015p:plain

実行します。 Debugを選択し、ブラウザにはChromeを選択しておきます。 Chromeのバージョンは70以上であることも確認しておいてください。 f:id:shuhelohelo:20190506153653p:plain

ブラウザが起動し、以下のページが表示されるはずです。 f:id:shuhelohelo:20190506153454p:plain

ここでCtrl+Shift+Iで開発ツールを表示させてみますが、ソースコードは表示されず、デバッグはできません。

BlazorのデバッグではまずShift+Alt+Dを押します。 すると以下のページが表示されるかと思います。

f:id:shuhelohelo:20190506154332p:plain

このページにデバッグの手順が書いてあります。

Resolution(解決方法)の項目に以下のように書いてあります。

すべてのChromeインスタンスを閉じて、Win+Rを押して以下を入力してください。

"%programfiles(x86)%\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 http://localhost:51248/

上の例は私の環境における表示ですので、ポート番号などはそれぞれ異なるかと思います。

このコマンドは後で使うのでどこかにコピーしておくと良いです。

Win+Rは「ファイル名を指定して実行」のやつです。

f:id:shuhelohelo:20190506154856p:plain

それでは言われたとおりにやっていきます。

  1. アプリケーションが実行中であれば停止します。
  2. Chromeをすべて閉じます。
  3. Win+Rを押して、先程の文字列を貼り付けて「OK」を押します。

するとChromeが起動し、先程実行したアプリケーションのページが表示されます。Visual Studioでアプリケーションを実行していないのに。 f:id:shuhelohelo:20190506160103p:plain

これは先程実行したときにダウンロードされたWebAssemblyやアプリケーションの実行モジュールなどがキャッシュされていて、それが利用されるためです。

PWAを実感できます。

次にVisual Studio側でアプリケーションを実行します。 こっちはこっちでもう一つChromeのウィンドウが開きますが、最小化でもして放っておいてください。

Win+Rから開いたChromeに戻って、改めてShift+Alt+Dを押します。 すると、以下のページが別タブで表示されます。

f:id:shuhelohelo:20190506160640p:plain

他のタブが開いているから閉じてね。

ということなので、このChromeウィンドウ内のその他のタブをすべて閉じます。Visual Studioから起動されたChromeは放っておきます。そっちを全部閉じてしまうとアプリケーションの実行が終了してしまうので。

ではこの「Multiple matching tabs are open」のページを再読込します。

以下のようにエミュレータソースコードが表示されます。

f:id:shuhelohelo:20190506161320p:plain

ブレークポイントを置くことができるので、試してみましょう。

Counter.razor内でブレークポイントを設定し、Click meボタンを押します。

設定したブレークポイントで止まります。

f:id:shuhelohelo:20190506163918p:plain

とはいえ、一つ課題が。 変数の値ってどうやって見るんですかね。