シンボルサーバーの構築方法

ちょっと、ディープなネタです。

WinDbg でダンプファイル解析を行う際、OS のシンボル情報が必要になります。
ダンプファイルを開いた際、シンボル情報が読み込めないと、

のように、”シンボル情報がないよ” と表示されてしまいます。
このまま進めていっても、ntdll.dll のシンボル情報がないので解析するのが非常に困難です。
きちんとシンボル情報を読み込ませると

となります。

シンボル情報を含んでいるシンボルサーバーは、Microsoft がインターネット上で公開していますので
通常は、それを使えば何も問題はありません。

WinDbg でこれを指定する場合には、File – Symbol File Path メニューで

を指定します。
ただ、インターネットに接続していない環境でもダンプ解析を行いたいという場合があるかもしれません。
そのような時には、シンボルサーバーを手元に構築しておくとよいかもしれません。

シンボルサーバーの構築方法について紹介します。(やっと本題)

  1. ネットワーク共有を作成する
    \\<server>\Symsrv
  2. Microsoft のサイトより、シンボルファイルをダウンロードする
    http://www.microsoft.com/japan/whdc/devtools/debugging/symbolpkg.mspx
  3. ネットワーク共有にシンボルを追加する
    ”Debugging Tools for Windows” にある Symstore コマンドを使う

このような方法でシンボルサーバーを構築することができます。
1 は今更説明するまでもないので割愛します。
2 ですが、例えば、Windows Server 2003 SP2 上で動いているアプリケーションのダンプファイルを解析したいと
いう場合には、

  • Windows Server 2003 SP2 のシンボル
  • Windows Server 2003 SP1 のシンボル
  • Windows Server 2003 のシンボル

の 3 つを用意しておく必要があります。OS が SP2 だから、シンボルも SP2 だけというわけではありませんので
注意してください。
3 の Symstore コマンドの代表的な使い方を紹介します。
(詳しくは、Debugging Tools for Windows のヘルプを参照してください)

例)

  • シンボルをダウンロードして展開したフォルダー : E:\download\symbols\2003\SP2
  • シンボルサーバーを構築するフォルダー : F:\Symsrv\Win2003\x86

上記にシンボルサーバーを構築する際の Symstore コマンドは以下のように使います。

symstore add /r /f E:\download\symbols\2003\SP2\*.* /s F:\Symsrv\Win2003\x86 /t “Windows Server 2003” /v “SP2”

  • /r: SP2 フォルダーにあるサブフォルダーも参照する
  • /f: 展開済みシンボルがあるフォルダー
  • /s: シンボルサーバーを構築するフォルダー
  • /t、/v: 製品名、バージョン(任意でよい)

このコマンドで、F:\Symsrv\Win2003\x86\SP2 というフォルダーが作成され、シンボル情報が構築できます。

あとは、WinDbg でこれを指定すればよいだけです。

参考情報

なお、WinDbg は常に最新のものを使うようにしましょう。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。