Open棟梁Project - マイクロソフト系技術情報 Wiki
目次 †
概要 †
以下は障害発生までに至る因果関係の事例になります。
「現象」と「原因」はプラットフォームの内部状態を理解しなければ紐付けできません。
逆に言えばプラットフォームの内部動作を理解しておけば、この紐付けも容易になります。
これを行うには
- プラットフォームに対する知識
- 状態確認・分析方法に関する知識
- 分析結果から原因を推測するスキル
が必要になります。
xxx例外の発生 †
現象 †
- 例外でクラッシュ
- xxx例外
分析手順 †
- ログ確認
WERなどから例外情報を確認する。
- ダンプ+ダンプ解析
- 本番環境でのみ再現する場合はクラッシュダンプ取得+解析
- 例外情報と、例外を発生させているスレッドのスタックを確認する。
- プログラムのプロファイル
開発環境で再現できる場合、プログラムをデバッグ
原因 †
プログラムのバグによる未処理例外
解決策 †
OutOfMemory?例外の発生 †
現象 †
- 性能が出ない → 例外でクラッシュ
- メモリ使用量大 → GC、ページング → オーバヘッド大 → OutOfMemory?例外
分析手順 †
- ログ確認
WERなどから例外情報を確認する。
- パフォーマンスカウンタ
ページング、メモリリークの確認、プロセスの特定など
- ダンプ+ダンプ解析
- 本番環境でのみ再現する場合はダンプ取得+解析
- 仮想アドレス空間の確保状況を確認する。
- プログラムのプロファイル
- 開発環境で再現できる場合、プロファイルを実行
- ヒープの使用状況を確認する。
原因 †
プログラムのバグによるメモリリーク
解決策 †