@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/windbg-sos-crash-dump-analysis/#article>
    schema:about <https://comcomponent.com/knowledge/crash-dump/>, <https://comcomponent.com/knowledge/windbg/> ;
    schema:mentions <https://comcomponent.com/knowledge/sos-extension/>, <https://comcomponent.com/knowledge/pdb/>, <https://comcomponent.com/knowledge/dotnet-dump/>, <https://comcomponent.com/knowledge/dotnet-framework/>, <https://comcomponent.com/knowledge/dotnet/>, <https://comcomponent.com/knowledge/handle-leak/>, <https://comcomponent.com/knowledge/native-crash/>, <https://comcomponent.com/knowledge/unhandled-exception/>, <https://comcomponent.com/knowledge/managed-memory-leak/> .

<https://comcomponent.com/knowledge/crash-dump/> a skos:Concept ;
    skos:prefLabel "クラッシュダンプ"@ja ;
    skos:definition "プロセスのメモリ内容・スタック情報・例外情報などをファイルへ書き出した、クラッシュ調査に使うスナップショットである。"@ja ;
    skos:altLabel ".dmpファイル"@ja ;
    skos:altLabel "ダンプファイル"@ja .

<https://comcomponent.com/knowledge/windbg/> a skos:Concept ;
    skos:prefLabel "WinDbg"@ja ;
    skos:definition "クラッシュダンプやハングしたプロセスの状態をカーネル/ユーザーモードで解析するためのMicrosoft製デバッガー。SOS拡張によるマネージドヒープ解析や、Application Verifierの検出結果の解析にも使われる。"@ja ;
    skos:altLabel "Debugging Tools for Windows" ;
    ks:uses <https://comcomponent.com/knowledge/crash-dump/> ;
    ks:recommendedFor <https://comcomponent.com/knowledge/native-crash/> .

<https://comcomponent.com/knowledge/sos-extension/> a skos:Concept ;
    skos:prefLabel "SOS拡張"@ja ;
    skos:definition "マネージドヒープの情報収集、ヒープ破損の検出、ランタイム内部データ型の表示など、CLRの内部をデバッガー上から読むためのデバッガー拡張である。"@ja ;
    skos:altLabel "Son of Strike" ;
    skos:altLabel "sos.dll" ;
    skos:broader <https://comcomponent.com/knowledge/windbg/> .

<https://comcomponent.com/knowledge/pdb/> a skos:Concept ;
    skos:prefLabel "PDB(プログラムデータベース)"@ja ;
    skos:definition "ビルド後の.dll/.exeと、ソースコード上の行・変数名を結びつけるデバッグ情報ファイル。アプリケーションの実行には通常不要だが、デバッグ・例外調査・ダンプ解析に使う。"@ja ;
    skos:altLabel "Program Database" ;
    skos:altLabel "シンボルファイル"@ja .

<https://comcomponent.com/knowledge/unhandled-exception/> a skos:Concept ;
    skos:prefLabel "未処理例外"@ja ;
    skos:definition "アプリケーションのどこでもキャッチされないままランタイムまで届き、プロセスを終了させる例外である。"@ja ;
    skos:altLabel "unhandled exception" .

<https://comcomponent.com/knowledge/clrstack-command/> a skos:Concept ;
    skos:prefLabel "!clrstack(CLRStackコマンド)"@ja ;
    skos:definition "SOS拡張が提供する、マネージドコードだけのスタックトレースを表示するコマンドである。"@ja ;
    skos:altLabel "CLRStack" ;
    skos:broader <https://comcomponent.com/knowledge/sos-extension/> .

<https://comcomponent.com/knowledge/printexception-command/> a skos:Concept ;
    skos:prefLabel "!pe(PrintExceptionコマンド)"@ja ;
    skos:definition "SOS拡張が提供する、現在のスレッドで最後にスローされた例外の型・メッセージ・内部例外・スタックトレースを表示するコマンドである。"@ja ;
    skos:altLabel "PrintException" ;
    skos:altLabel "!pe -nested" ;
    skos:broader <https://comcomponent.com/knowledge/sos-extension/> .

<https://comcomponent.com/knowledge/managed-memory-leak/> a skos:Concept ;
    skos:prefLabel "マネージドメモリリーク"@ja ;
    skos:definition "マネージドオブジェクトへの参照が解放されずに残り続け、マネージドヒープの使用量が増え続ける状態である。"@ja ;
    skos:altLabel "メモリリーク(.NET)"@ja ;
    ks:verifiedBy <https://comcomponent.com/knowledge/dumpheap-command/> ;
    ks:verifiedBy <https://comcomponent.com/knowledge/gcroot-command/> .

<https://comcomponent.com/knowledge/dumpheap-command/> a skos:Concept ;
    skos:prefLabel "dumpheap -statコマンド"@ja ;
    skos:definition "ヒープ上の型ごとの件数(Count)とサイズ(Size)の統計を表示するSOSデバッガーコマンド。"@ja ;
    skos:altLabel "!dumpheap -stat" ;
    ks:uses <https://comcomponent.com/knowledge/managed-heap/> .

<https://comcomponent.com/knowledge/gcroot-command/> a skos:Concept ;
    skos:prefLabel "gcrootコマンド"@ja ;
    skos:definition "指定したオブジェクトがどこから参照されているか、GCルートまでの参照経路を表示するSOSデバッガーコマンド。"@ja ;
    skos:altLabel "!gcroot" ;
    ks:uses <https://comcomponent.com/knowledge/managed-heap/> .

<https://comcomponent.com/knowledge/managed-heap/> a skos:Concept ;
    skos:prefLabel "マネージドヒープ"@ja ;
    skos:definition ".NETのガベージコレクターが管理する、マネージドオブジェクトが確保されるメモリ領域である。"@ja ;
    skos:altLabel "managed heap" .

<https://comcomponent.com/knowledge/native-crash/> a skos:Concept ;
    skos:prefLabel "ネイティブクラッシュ"@ja ;
    skos:definition "C++のDLL、COM、ベンダーSDKなどが絡む、マネージド例外ではなくネイティブコード側で発生するクラッシュである。"@ja ;
    skos:altLabel "アクセス違反"@ja ;
    skos:altLabel "ネイティブ例外"@ja ;
    ks:verifiedBy <https://comcomponent.com/knowledge/analyze-v-command/> .

<https://comcomponent.com/knowledge/analyze-v-command/> a skos:Concept ;
    skos:prefLabel "!analyze -v"@ja ;
    skos:definition "クラッシュ・例外の自動解析を行うWinDbgの拡張コマンドで、-vオプションを付けると落ちた場所・推定原因・所属モジュールなどを詳細表示する。"@ja ;
    skos:altLabel "!analyze -hang" ;
    skos:broader <https://comcomponent.com/knowledge/windbg/> .

<https://comcomponent.com/knowledge/dotnet-dump/> a skos:Concept ;
    skos:prefLabel "dotnet-dump"@ja ;
    skos:definition "プロセスのダンプ(ヒープダンプやクラッシュダンプ)を収集・解析する.NETの診断ツール。SOSコマンド(dumpheap・gcroot・clrstackなど)でヒープの参照元やスタックトレースを調べられるが、ネイティブのスタックフレームは扱えない。"@ja ;
    ks:requires <https://comcomponent.com/knowledge/crash-dump/> ;
    ks:uses <https://comcomponent.com/knowledge/sos-extension/> ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/native-crash/> ;
    ks:recommendedFor <https://comcomponent.com/knowledge/managed-memory-leak/> .

<https://comcomponent.com/knowledge/dotnet-framework/> a skos:Concept ;
    skos:prefLabel ".NET Framework"@ja ;
    skos:definition "Windowsのコンポーネントとして扱われ、インストールされているOSのライフサイクルに沿ってサポートされるランタイム。System.Messagingの対象範囲。"@ja .

<https://comcomponent.com/knowledge/dotnet/> a skos:Concept ;
    skos:prefLabel ".NET(Core以降)"@ja ;
    skos:definition ".NET Frameworkの後継となる、クロスプラットフォーム対応の.NETランタイム(.NET 5以降)。"@ja ;
    skos:altLabel ".NET Core" ;
    skos:altLabel "モダンな.NET"@ja .

<https://comcomponent.com/knowledge/handle-leak/> a skos:Concept ;
    skos:prefLabel "ハンドルリーク"@ja ;
    skos:definition "参照カウントやハンドルカウントの数え違いなどにより、不要になったハンドル(ファイル・イベント・スレッド・GDIオブジェクト・アクセストークンなどカーネルオブジェクトへの参照)が解放されずに積み上がっていく状態。"@ja ;
    skos:altLabel "Handle Leak" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windbg/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/sos-extension/> ;
    schema:description ".NETアプリのダンプでマネージドヒープの中身やC#のスタックフレームを見るには、WinDbg上でSOS拡張を読み込む必要がある"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/sos-debugging-extension> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windbg/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/crash-dump/> ;
    schema:description "WinDbgは-zオプションまたはFileメニューからクラッシュダンプファイルを指定して開き、その中身を解析する"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/debugger/opening-a-crash-dump-file-using-windbg> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windbg/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/pdb/> ;
    schema:description "ソースファイル名・行番号やネイティブフレームの関数名まで見るには、_NT_SYMBOL_PATHにPDBの場所を通す必要があるが、多くのコマンドはPDBが無くても機能する"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/debugger/symbol-path> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/unhandled-exception/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/clrstack-command/> ;
    schema:description "マネージドコードの未処理例外で落ちたダンプは、例外を持つスレッドに切り替えて!clrstackでマネージドスタックを表示することで、どの経路で落ちる場所まで来たかを確認できる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/sos-debugging-extension#commands> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/unhandled-exception/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/printexception-command/> ;
    schema:description "マネージドコードの未処理例外では、!pe(PrintException)で例外オブジェクトの型・メッセージ・内部例外を確認できる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/sos-debugging-extension#commands> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/managed-memory-leak/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/dumpheap-command/> ;
    schema:description "!dumpheap -statでマネージドヒープの型ごとの件数・合計サイズを確認し、量で殴っている型を特定する"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/debug-memory-leak> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/managed-memory-leak/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/gcroot-command/> ;
    schema:description "!dumpheapで特定した個別インスタンスについて!gcrootを実行し、GCで回収されずに残り続ける原因の参照元を洗い出す"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/debug-memory-leak> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dumpheap-command/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/managed-heap/> ;
    schema:description "!dumpheapはマネージドヒープを走査して型ごとの統計または個別インスタンスの一覧を表示する"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/debug-memory-leak> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/gcroot-command/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/managed-heap/> ;
    schema:description "!gcrootはマネージドヒープとハンドルテーブルの全体を検索して参照経路を洗い出す"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/debug-memory-leak> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/native-crash/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/analyze-v-command/> ;
    schema:description "アクセス違反などのネイティブクラッシュは、まず!analyze -vの自動解析でFAULTING_IPやFOLLOWUP_IPなどの主要フィールドを確認するところから入る"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/debugger/using-the--analyze-extension> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-dump/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/crash-dump/> ;
    schema:description "dotnet-dump analyzeはクラッシュダンプファイルを指定して対話セッションを開く"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/dotnet-dump> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-dump/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/sos-extension/> ;
    schema:description "dotnet-dump analyzeはSOSが事前インストールされた対話セッションを開き、clrstackやdumpheapなどSOSのコマンド体系をそのまま使える"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/dotnet-dump> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-dump/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/native-crash/> ;
    schema:description "dotnet-dumpはネイティブなデバッガーではないためネイティブのスタックフレームを扱えず!analyze -vも使えないので、ネイティブクラッシュの調査には向かない"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/dotnet-dump> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windbg/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/native-crash/> ;
    schema:description "COMやP/Invoke、ネイティブDLLが絡む可能性がある調査には、ネイティブスタックフレームと!analyze -vが使えるWinDbgが本記事の推奨である"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/dotnet-dump> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-dump/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/managed-memory-leak/> ;
    schema:description "純粋なマネージドコードのメモリリーク調査で、CIや複数プラットフォームでも動かしたい場合は、導入が軽いdotnet-dump analyzeが本記事の推奨である"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/dotnet-dump> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/sos-extension/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-framework/> ;
    schema:description "対象アプリが.NET Frameworkの場合、ランタイム本体clr.dllの近傍から.loadby sos clrでSOSを読み込む"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/debugger/debugging-managed-code> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/sos-extension/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/dotnet/> ;
    schema:description "対象アプリが.NET Core/.NET 5+の場合、ランタイム本体coreclr.dllの近傍から.loadby sos coreclrでSOSを読み込む"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/debugger/debugging-managed-code> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/handle-leak/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/gcroot-command/> ;
    schema:description "SafeHandleを持つマネージドラッパーが原因のハンドルリークでは、!dumpheap -statでマネージドヒープの増加がないと分かった後、そのラッパーが残っていれば!gcrootでGCルートを追い、OSハンドルの解放漏れ箇所を特定できる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/sos-debugging-extension#commands> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/unhandled-exception/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/crash-dump/> ;
    schema:description "未処理例外はプロセスを終了させ、WER LocalDumpsやProcDumpの設定次第でその瞬間のクラッシュダンプが書き出される"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/debugger/opening-a-crash-dump-file-using-windbg> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .
