しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Azure Web サイトのリモートデバッグを使って SCM 側にデバッガーをアタッチする

Azure Web サイトへのリモートデバッグは Visual Studio 2013 Update 4 とか Azure SDK 2.5 を入れている場合には、サーバーエクスプローラーから右クリックするだけの簡単操作で行えます。

f:id:shiba-yan:20141210202625p:plain

今のところサーバーエクスプローラーからのリモートデバッグだと、公開側の w3wp.exe へのアタッチしか出来ません。ASP.NET アプリケーションをデプロイしてデバッグする以上、そういった仕様になっています。

しかし、世の中には SCM 側で動いている任意のプロセスにデバッガーをアタッチしたいことも度々出てくると思います。例えば Kudu 本体のデバッグを行いたい場合とかです。

f:id:shiba-yan:20141210200134p:plain

実際にはリモートデバッグを有効にした場合、SCM 側の w3wp.exe にもリモートデバッグモニターがぶら下がるので、サーバーエクスプローラーを使わなければ簡単にアタッチできます。

とりあえず対象の Web サイトのリモートデバッグを有効にします。

f:id:shiba-yan:20141210202243p:plain

最近は Visual Studio で設定変更が出来るのでとても楽ですね。

リモートデバッグを有効にしたら「ツール」から「プロセスにアタッチ」を選択し、修飾子に {sitename}.scm.azurewebsites.net:4018 を入力して資格情報を入力します。

f:id:shiba-yan:20141210204601p:plain

この場合は kinmugi-ruby-1.scm.azurewebsites.net:4018 を指定しました。資格情報はサイトレベルとユーザーレベルのどちらでも大丈夫です。

資格情報に問題が無ければ、アタッチ可能なプロセス一覧が表示されます。

f:id:shiba-yan:20141210205525p:plain

今は公開側の w3wp.exe が動いていないので 1 つしか見えていないですが、複数ある場合には Kudu の Process Explorer でプロセス ID を調べます。

Kudu 本体にアタッチしたいので w3wp.exe を選択してアタッチしました。

f:id:shiba-yan:20141210210132p:plain

デバッグウィンドウに Kudu 関連のアセンブリが読み込まれているログが出力されています。

基本的に標準でインストールされている Kudu には pdb などが含まれていないので、実際に本格的なデバッグを行う場合には GitHub から Kudu のソースコードを落としてきて、プライベートな Kudu としてデプロイした方が良い気がしました。