kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Azure App Service障害発生時のダンプ解析とシンボル管理

blog.shibayan.jp

App Serviceだけではないけど、障害が発生してダンプの解析をしなければならない場合がたまにあります。

ダンプ解析するにはそのモジュールのシンボル(pdb)ファイルを取っておかないといけないのですが、障害解析ができない場合に限って、シンボルをちゃんと管理しているという話をとんと聞きません。特にCやC++のネイティブモジュールであればシンボルがあると、ないとではかなり大変さが違います。

VSTS(Visual Studio Team Services)のPackage管理機能のライセンス(Enterprise Subscriptionを持っている人には入っています)があれば、VSTSのシンボルサーバー機能が使えます。どうやって使うのか紹介します。

シンボル設定初期値
シンボル設定初期値

オプションからシンボルを選択して、右上の赤枠アイコンをクリックします。

VSTS選択
VSTS選択

シンボルサーバーとしてライセンスがあるVSTSを選択します。

VSTSシンボルサーバー追加
VSTSシンボルサーバー追加

このように追加されます。

ビルド定義にシンボル発行を追加
ビルド定義にシンボル発行を追加

Publish Symbol PathタスクのPublish Symbolsにチェックすると、pdbファイルを自動的にVSTS内に保存します。保存先はVSTS内か、ファイル共有が選べます。

前書いたように、ビルド結果はRetain Policyに従って自動削除されます。シンボルも同じ制御を受けるので、ビルド結果が削除されると自動的にシンボルも削除されます。うっかりプロダクションにリリースしたファイルを削除しないように気を付けてください。

Azure App Serviceのプランによってはダンプが採取できます。

ダンプ収集
ダンプ収集

ダウンロードしたミニダンプをダウンロードして、Visual StudioやWinDbgで開くと、VSTSもシンボルサーバーとして扱われるので、自動的にシンボルが検索されます。

ダンプを開く
ダンプを開く

今までファイル共有などでシンボル管理はタイへだったと思いますが、VSTSのシンボルサーバー機能はダンプ解析する時大変便利なので、ぜひ使ってください。