クラッシュダンプ解析

クラッシュ。ブルースクリーン。BSOD。 嫌な単語です。WindowsServer管理者としてはもっとも遭遇したくない現象の1つでしょう。でも残念ながら結構よく遭遇してしまうのが現実です。 対応としては、表示されるストップコードをGoogleやMicrosoftのKnowledgeBaseで検索してみて、該当する情報を調べてみたりする・・・ということがまずできるわけですが、それだけで問題の原因にたどり着けることは稀です。通常は色々と発生する条件を絞り込み、問題を切り分けて「このあたりが怪しい」というところまで持っていったところで機器のみなし交換やソフトウェアのバージョンアップや入れ替えを行い、問題が再発しないことを祈る・・・この程度の対応が精一杯だと思います。 しかし、このような問題を切り分けて回避していくアプローチでは結局問題の根本原因が判明せず「いつ再現するかわからない」状況になってしまいます。そうではなく、「問題の根本原因」を突き詰めていく方法、それがクラッシュダンプ解析です。 クラッシュダンプが発生するのは、何かしらのHWなり、ソフトウェアなりに問題があることは確実なわけですから、その原因となっているコンポーネントを突き止めて、そのメーカーに証拠とともに改善要求を出す、これがWindowsServer管理者が取れる最善の方法です。 これができるためには、(ケースにもよりますが)かなりHWやOSの深い知識を持ってダンプの解析を行わなければいけません。 私がエンジニアになってからも何度もこのダンプの解析の必要性に迫られたことがあるのですが、残念ながら当時の私にはその能力がなく、またその能力を身に着けたくてもその方法が全くわからない・・・ということがずっと続いていました。泣く泣くメーカーに高い費用を払ってダンプの解析を頼むことも良くありました。 ですが、ここさいきんではかなり情報が公開され、ダンプ解析をできるようになるための知識を身につけることが可能になってきています。 お勧めの書籍 ここではダンプ解析ができるようになるための知識を身につけるためのお勧めの書籍を紹介します。 Windowsダンプの極意 エラーが発生したら、まずダンプ解析! 上原 祥市 まずは、この書籍。日本語でダンプ解析のことを正面から取り扱った本は他にはないと思います。様々なケースのダンプ解析の手法が詳しく書かれており、ここに書かれていることを一通り理解できるようになれば、大抵のケースで問題モジュールの特定が可能になると思います。 プログラムはなぜ動くのか 第2版 知っておきたいプログラミングの基礎知識 矢沢 久雄 コンピューターは結局のところCPUがプログラムを実行することでうごいているわけで、ダンプ解析に関してもこの部分の理解が不可欠です。メモリとCPUの処理の関連性から基本的なマシン語の成り立ち、C言語での関数呼び出し時のスタックの使われ方などなど、基本的なコンピューター、プログラムの動作内容の理解にはこの本がわかりやすいと思います。難易度も低めです。 インサイド Microsoft Windows 第4版〈上〉 (マイクロソフト公式解説書) ディビット ソロモン マーク ルシノビッチ インサイドMicrosoft Windows第4版〈下〉 (マイクロソフト公式解説書) ディビット ソロモン マーク ルシノビッチ ダンプ自体は結局OSが保持しているメモリの内容が吐き出されたものであり、それを理解するためにはOS自体の知識が欠かせません。OSの仕組みに関してはインサイドWindowsが良く書かれています。ただし、難易度も高いですが・・・。 ダンプ解析自体は、あるいはサーバー管理者には直接必要ないという考え方もあるかと思います。お金で解決できる問題でもありますし(それを言い出したらサーバー管理自体もお金の問題なのですが)、取り組む場合に勉強すべきレベルが深すぎて、レベルも高いですし、必要となる前提知識としてかなり根源的なものが要求されてしまいます。 ですが、私は逆にこのような物事に取り組み理解することこそが、技術力の地盤となり、ある程度の年月がたっても通用するエンジニアとなるための(遠回りのように見える)近道なのではないかと考えています。 私自身まだまだ技術力不足な面が多いのですが、このブログでもダンプ解析のことについて少しずつ触れていきたいと思います。

May 26, 2009 · 1 min · 胡田昌彦