検死デバッグ(postmortem debugging) [プログラマー現役続行]
本書は、33名のソフトウェア開発者による美しいコードというテーマで執筆してもらったものをまとめたものです。その中の第22章「スプーン一杯の汚水で」は、1999年にSolarisカーネルの重要なサブシステム開発中に起きた問題とその解決の過程について説明されています。
問題を調査するためのデバッグの過程で、生きて実行中のシステムをデバッグする「その場デバッグ」(in situ debugging)とは対照的な「検死デバッグ」(postmortem debugging)を用いたという説明があります。そして、それは次のように重要なスキルだと述べられています。
どんなソフトウェアエンジニアにとっても重要なスキルは、複雑なソフトウェアシステムの失敗を解析し、その解析を厳密に表現できる能力です。そして十分複雑なシステムではしばしば、失敗の解析は法医学的です--つまり、システムが失敗したときの状態のスナップショットに基づきます。実際のところ、そのような状態のスナップショットはデバッグの基本中の基本であるため、コンピュータの黎明期以来、ある決まった名前でよばれています。「コアダンプ」。マルチスレッド環境での検死デバッグでは、高い能力を求められます。実際に経験して、きちんと問題を解析・解決する経験を積めば、その能力も向上していきます。私自身も、1993年に米国駐在から帰ってきた後に従事したプロジェクトでは、マルチスレッドの大規模なシステムのコアダンプをよく「検死デバッグ」したものです。(途中省略)さらに、検死デバッグではいろいろ試すような選択肢が少ないため、可能性やその検証についてより厳密に考える必要があることから、検死デバッグで能力を磨けば、その場デバッグも効率よく行えるようになります。(途中省略)つまり、検死デバッグは我々の能力の本質的な一部分であり、ソフトウェアエンジニアのプロであれば誰でも持つべき能力なのです。
2009-07-20 06:16
nice!(0)
コメント(0)
トラックバック(0)
コメント 0