@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/2026/03/19/000-windows-app-crash-logging-best-practices/#article>
    schema:about <https://comcomponent.com/knowledge/crash-time-logging-design/>, <https://comcomponent.com/knowledge/wer-localdumps/> ;
    schema:mentions <https://comcomponent.com/knowledge/application-log/>, <https://comcomponent.com/knowledge/fatal-crash-marker/>, <https://comcomponent.com/knowledge/watchdog-process/>, <https://comcomponent.com/knowledge/post-restart-processing/>, <https://comcomponent.com/knowledge/dotnet-unhandledexception/>, <https://comcomponent.com/knowledge/winforms-threadexception/>, <https://comcomponent.com/knowledge/wpf-dispatcherunhandledexception/>, <https://comcomponent.com/knowledge/unobserved-task-exception/>, <https://comcomponent.com/knowledge/environment-failfast/>, <https://comcomponent.com/knowledge/seh/>, <https://comcomponent.com/knowledge/crt-termination-handler/>, <https://comcomponent.com/knowledge/crash-dump/>, <https://comcomponent.com/knowledge/pdb/>, <https://comcomponent.com/knowledge/windbg/> .

<https://comcomponent.com/knowledge/crash-time-logging-design/> a skos:Concept ;
    skos:prefLabel "クラッシュ時のログ・証跡設計"@ja ;
    skos:definition "落ちるプロセスの中だけに証跡を期待せず、通常ログ・最終クラッシュマーカー・OS/別プロセス側の証跡に役割を分けて残す設計方針。"@ja ;
    skos:altLabel "クラッシュ時ログ設計"@ja ;
    ks:requires <https://comcomponent.com/knowledge/application-log/> ;
    ks:requires <https://comcomponent.com/knowledge/fatal-crash-marker/> ;
    ks:requires <https://comcomponent.com/knowledge/wer-localdumps/> .

<https://comcomponent.com/knowledge/wer-localdumps/> a skos:Concept ;
    skos:prefLabel "WER LocalDumps"@ja ;
    skos:definition "WERがクラッシュ後にユーザーモードダンプをローカルへ保存するための、レジストリで設定する機能。追加ツールなしでアプリ単位の設定が可能。"@ja ;
    skos:altLabel "LocalDumps" ;
    skos:altLabel "HKLM\\SOFTWARE\\Microsoft\\Windows\\Windows Error Reporting\\LocalDumps" ;
    skos:broader <https://comcomponent.com/knowledge/wer/> ;
    ks:shouldPrecede <https://comcomponent.com/knowledge/wer-file-registration/> ;
    ks:implements <https://comcomponent.com/knowledge/crash-dump/> .

<https://comcomponent.com/knowledge/application-log/> a skos:Concept ;
    skos:prefLabel "通常ログ(時系列ログ)"@ja ;
    skos:definition "UTCタイムスタンプ、PID/TID、バージョン、セッションIDなどを1行1イベントで残す、クラッシュ直前までの時系列ログ。"@ja ;
    skos:altLabel "app-<session>.jsonl" ;
    skos:altLabel "構造化ログ"@ja .

<https://comcomponent.com/knowledge/fatal-crash-marker/> a skos:Concept ;
    skos:prefLabel "最終クラッシュマーカー"@ja ;
    skos:definition "多重突入を防ぎつつ1行だけ書いてflushし終了する、クラッシュ発生時専用の短い記録ファイル。原因の詳細ではなく入口の固定を目的とする。"@ja ;
    skos:altLabel "fatal-last.log" ;
    skos:altLabel "fatalマーカー"@ja ;
    ks:shouldPrecede <https://comcomponent.com/knowledge/post-restart-processing/> ;
    ks:recommendedFor <https://comcomponent.com/knowledge/dotnet-unhandledexception/> ;
    ks:recommendedFor <https://comcomponent.com/knowledge/seh/> ;
    ks:recommendedFor <https://comcomponent.com/knowledge/crt-termination-handler/> ;
    ks:recommendedFor <https://comcomponent.com/knowledge/winforms-threadexception/> .

<https://comcomponent.com/knowledge/seh/> a skos:Concept ;
    skos:prefLabel "SEH(構造化例外処理)"@ja ;
    skos:definition "Windowsのネイティブ例外機構。SetUnhandledExceptionFilterはfaulting threadの文脈で動くbest effortの最後の通知の入口。"@ja ;
    skos:altLabel "Structured Exception Handling" ;
    skos:altLabel "SetUnhandledExceptionFilter" .

<https://comcomponent.com/knowledge/crt-termination-handler/> a skos:Concept ;
    skos:prefLabel "CRT/C++ランタイムの終了経路"@ja ;
    skos:definition "_set_invalid_parameter_handler、_set_purecall_handler、set_terminateなど、SEHとは別にCRT・C++ランタイム起点で終了に向かう経路。"@ja ;
    skos:altLabel "invalid parameter handler" ;
    skos:altLabel "purecall handler" ;
    skos:altLabel "set_terminate" .

<https://comcomponent.com/knowledge/watchdog-process/> a skos:Concept ;
    skos:prefLabel "監視プロセス(watchdog)"@ja ;
    skos:definition "本体プロセスの起動・終了・生存を外から見張り、exit codeや再起動回数を記録する別プロセス。"@ja ;
    skos:altLabel "watchdog" ;
    skos:altLabel "launcher" ;
    skos:altLabel "親サービス"@ja ;
    ks:recommendedFor <https://comcomponent.com/knowledge/high-reliability-operation-requirement/> .

<https://comcomponent.com/knowledge/high-reliability-operation-requirement/> a skos:Concept ;
    skos:prefLabel "24/7運転・装置制御などの強めの要件"@ja ;
    skos:definition "24/7運転、装置制御、COM/P-Invoke/native SDKの混在、子プロセスやプラグインの実行など、監視プロセスを足す価値が高い要件。"@ja ;
    skos:altLabel "長時間運転要件"@ja .

<https://comcomponent.com/knowledge/post-restart-processing/> a skos:Concept ;
    skos:prefLabel "次回起動後の後処理"@ja ;
    skos:definition "圧縮、サーバーアップロード、ユーザー通知など、クラッシュ時ではなく次回起動後の健全なプロセスや別プロセスで行うべき重い処理。"@ja ;
    skos:altLabel "圧縮・アップロード・通知"@ja .

<https://comcomponent.com/knowledge/session-id-correlation/> a skos:Concept ;
    skos:prefLabel "session IDによる証跡の突き合わせ"@ja ;
    skos:definition "通常ログ・最終クラッシュマーカー・ダンプ・watchdog記録を、共通のsession IDとPIDで同一の起動インスタンスとして突き合わせる仕組み。"@ja ;
    skos:altLabel "session相関"@ja .

<https://comcomponent.com/knowledge/dotnet-unhandledexception/> a skos:Concept ;
    skos:prefLabel "AppDomain.UnhandledException"@ja ;
    skos:definition ".NETの未処理例外イベント。最後の通知として有用だが、重い回復処理をする場所ではない。"@ja ;
    skos:altLabel "System.AppDomain.UnhandledException" .

<https://comcomponent.com/knowledge/winforms-threadexception/> a skos:Concept ;
    skos:prefLabel "Application.ThreadException(WinForms)"@ja ;
    skos:definition "WinFormsのUIスレッドの未処理例外を拾い、Handled指定で見かけ上継続できてしまうイベント。"@ja ;
    skos:altLabel "ThreadException" ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/unexpected-exception-continuation/> .

<https://comcomponent.com/knowledge/unexpected-exception-continuation/> a skos:Concept ;
    skos:prefLabel "プログラムミス起点の想定外例外での処理継続"@ja ;
    skos:definition "共有状態更新の途中だったかもしれない想定外の例外を握りつぶし、画面やアプリを見かけ上動き続けさせる対応。"@ja ;
    skos:altLabel "見かけ上の延命"@ja .

<https://comcomponent.com/knowledge/wpf-dispatcherunhandledexception/> a skos:Concept ;
    skos:prefLabel "Application.DispatcherUnhandledException(WPF)"@ja ;
    skos:definition "WPFのUIスレッドの未処理例外を拾い、Handled=trueにすると見かけ上継続できてしまうイベント。"@ja ;
    skos:altLabel "DispatcherUnhandledException" ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/unexpected-exception-continuation/> .

<https://comcomponent.com/knowledge/unobserved-task-exception/> a skos:Concept ;
    skos:prefLabel "TaskScheduler.UnobservedTaskException"@ja ;
    skos:definition "Taskの例外取りこぼしを検知する補助イベント。クラッシュ時の確実な記録経路としては弱い。"@ja ;
    skos:altLabel "UnobservedTaskException" ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/fatal-crash-marker/> .

<https://comcomponent.com/knowledge/environment-failfast/> a skos:Concept ;
    skos:prefLabel "Environment.FailFast"@ja ;
    skos:definition "try/finallyとfinalizerを実行させずにプロセスを即座に終了させ、イベントログへの記録とダンプ採取を行う.NETのAPIのこと。"@ja ;
    skos:altLabel "FailFast" ;
    ks:uses <https://comcomponent.com/knowledge/windows-application-event-log/> .

<https://comcomponent.com/knowledge/windows-application-event-log/> a skos:Concept ;
    skos:prefLabel "Windowsアプリケーションイベントログ"@ja ;
    skos:definition "Environment.FailFastが終了前にメッセージを書き込む、Windowsのイベントログの一種。"@ja ;
    skos:altLabel "Application Log" .

<https://comcomponent.com/knowledge/dump-folder-acl/> a skos:Concept ;
    skos:prefLabel "ダンプ保存先フォルダのACL"@ja ;
    skos:definition "クラッシュしたプロセスの実行アカウントが、ダンプの保存先フォルダに実際に書き込める状態になっているかを表すアクセス制御設定。"@ja ;
    skos:altLabel "DumpFolderのアクセス権"@ja ;
    skos:altLabel "icacls" .

<https://comcomponent.com/knowledge/crash-dump/> a skos:Concept ;
    skos:prefLabel "クラッシュダンプ"@ja ;
    skos:definition "プロセスのメモリ内容・スタック情報・例外情報などをファイルへ書き出した、クラッシュ調査に使うスナップショットである。"@ja ;
    skos:altLabel ".dmpファイル"@ja ;
    skos:altLabel "ダンプファイル"@ja ;
    ks:verifiedBy <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/windbg/> a skos:Concept ;
    skos:prefLabel "WinDbg"@ja ;
    skos:definition "クラッシュダンプやハングしたプロセスの状態をカーネル/ユーザーモードで解析するためのMicrosoft製デバッガー。SOS拡張によるマネージドヒープ解析や、Application Verifierの検出結果の解析にも使われる。"@ja ;
    skos:altLabel "Debugging Tools for Windows" .

<https://comcomponent.com/knowledge/minidumpwritedump/> a skos:Concept ;
    skos:prefLabel "MiniDumpWriteDump"@ja ;
    skos:definition "UIからの診断情報保存や、ログ・独自メタデータの同梱など、自前のダンプ収集機能を実装するためのWin32 API。"@ja ;
    skos:altLabel "MiniDumpWriteDump API" ;
    ks:implements <https://comcomponent.com/knowledge/crash-dump/> .

<https://comcomponent.com/knowledge/wer-file-registration/> a skos:Concept ;
    skos:prefLabel "WerRegisterFileによるログ添付登録"@ja ;
    skos:definition "現在のログファイルをWERのエラーレポートに含めるための登録を行う仕組み。ローカル保存の代替ではなく追加導線として使う。"@ja ;
    skos:altLabel "WerRegisterFile" ;
    ks:uses <https://comcomponent.com/knowledge/application-log/> .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/crash-time-logging-design/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/application-log/> ;
    schema:description "3層構成のうち、直前までの時系列を残す通常ログが土台になる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/wer/using-wer> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/crash-time-logging-design/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/fatal-crash-marker/> ;
    schema:description "3層構成のうち、落ちる瞬間に1行だけ書いてFlush(true)する最終クラッシュマーカーが要る"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/api/system.io.filestream.flush> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/crash-time-logging-design/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/wer-localdumps/> ;
    schema:description "3層構成の主証跡は、落ちたプロセスの外に残るWER LocalDumpsのダンプに持たせる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/wer/collecting-user-mode-dumps> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/crash-time-logging-design/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/seh/> ;
    schema:description "native Win32/C++のアプリでは、SetUnhandledExceptionFilterによるSEHの終了経路も押さえる必要がある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/api/errhandlingapi/nf-errhandlingapi-setunhandledexceptionfilter> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/crash-time-logging-design/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/crt-termination-handler/> ;
    schema:description "native C++のアプリでは、SEHだけでなくinvalid parameter・purecall・terminateなどCRTランタイム起点の終了経路も意識する必要がある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/set-terminate-crt> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/watchdog-process/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/high-reliability-operation-requirement/> ;
    schema:description "24/7運転、装置制御、COM/P-Invoke/native SDK混在、子プロセスやプラグイン実行などの要件では、監視プロセスを足すとかなり強くなる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/wer/using-wer> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/fatal-crash-marker/> ;
    rdf:predicate ks:shouldPrecede ;
    rdf:object <https://comcomponent.com/knowledge/post-restart-processing/> ;
    schema:description "クラッシュ時はローカルへ短く残すだけにして、圧縮・アップロード・通知は次回起動後か別プロセスに回すべきとされる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/api/system.io.filestream.flush> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/fatal-crash-marker/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/session-id-correlation/> ;
    schema:description "通常ログやダンプ、watchdog記録と突き合わせる運用にする場合、最終クラッシュマーカーのファイル名にsession IDを入れることが前提になる。突き合わせを行わないなら、最終クラッシュマーカー自体はsession IDなしでも1行書いて終了するという役割を果たせる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/api/system.io.filestream.flush> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/fatal-crash-marker/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-unhandledexception/> ;
    schema:description "AppDomain.UnhandledExceptionのハンドラー内では、最終クラッシュマーカーを書くところまでにとどめることが推奨される"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/fundamentals/runtime-libraries/system-appdomain-unhandledexception> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/winforms-threadexception/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/unexpected-exception-continuation/> ;
    schema:description "ThreadExceptionはUIスレッドの未処理例外を拾って見かけ上継続できてしまうが、プログラムミス起点の想定外例外で継続する用途には向かないとされる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.application.threadexception> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wpf-dispatcherunhandledexception/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/unexpected-exception-continuation/> ;
    schema:description "Handled=trueで見かけ上継続できるが、プログラムミス相手にそれをやると画面状態と内部状態がずれやすいとされる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/api/system.windows.application.dispatcherunhandledexception> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/unobserved-task-exception/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/fatal-crash-marker/> ;
    schema:description "TaskScheduler.UnobservedTaskExceptionはTaskの例外取りこぼしの検知には使えるが、最終クラッシュハンドラの主役にはしない方がよいとされる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskscheduler.unobservedtaskexception> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/environment-failfast/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/windows-application-event-log/> ;
    schema:description "Environment.FailFastはメッセージをWindowsのアプリケーションイベントログに書いてからプロセスを即時終了させ、その内容をエラー報告にも含める"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/api/system.environment.failfast> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/fatal-crash-marker/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/seh/> ;
    schema:description "SetUnhandledExceptionFilterなどのnative側のハンドラでも、最終クラッシュマーカーを書いたうえで確実に終了させるのが無難とされる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/api/errhandlingapi/nf-errhandlingapi-setunhandledexceptionfilter> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/fatal-crash-marker/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/crt-termination-handler/> ;
    schema:description "invalid parameter・purecall・terminateのハンドラでも最終クラッシュマーカーを書き、重い回復処理はせず確実に終了させるのが無難とされる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/set-terminate-crt> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wer-localdumps/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/dump-folder-acl/> ;
    schema:description "Windowsサービスや権限分離した子プロセス、現場機の制限アカウントでは保存先ACLが空振りの主因になるため、書き込みテストまで確認する必要がある。通常のユーザーコンテキストで既定の保存先を使う場合はここまで意識しなくても書き込めることが多い"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/wer/collecting-user-mode-dumps> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/crash-dump/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/pdb/> ;
    schema:description "ソース行まで追って原因箇所を特定したい場合、ダンプ収集とPDB・配布バイナリの保管をセットで行う必要がある。PDBが無くてもマネージドのスタックフレームや型情報など読める情報は残るが、ソースファイル名・行番号だけは失われる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/symbol-path> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/crash-dump/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/windbg/> ;
    schema:description "取れたダンプは同じビルドのPDBと配布バイナリを集めたうえでWinDbgを使い、.ecxrで例外コンテキストへ移動してから!analyzeで読み進める"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows-hardware/drivers/debuggercmds/-ecxr--display-exception-context-record-> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/minidumpwritedump/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/crash-dump/> ;
    schema:description "MiniDumpWriteDumpは自前でクラッシュダンプを生成する実装を担うAPIで、クラッシュしたプロセスの中より別プロセスから呼ぶ方が安全とされる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/api/minidumpapiset/nf-minidumpapiset-minidumpwritedump> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/watchdog-process/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/minidumpwritedump/> ;
    schema:description "worker本体が壊れていてもhelperは健全なため、helper側からworkerのダンプを取る構成にできる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/api/minidumpapiset/nf-minidumpapiset-minidumpwritedump> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wer-file-registration/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/application-log/> ;
    schema:description "WerRegisterFileで現在のログファイルをエラーレポートに含めるための登録ができる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/api/werapi/nf-werapi-werregisterfile> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wer-localdumps/> ;
    rdf:predicate ks:shouldPrecede ;
    rdf:object <https://comcomponent.com/knowledge/wer-file-registration/> ;
    schema:description "順番としては、ローカル通常ログ・ローカルfatalマーカー・ローカルdumpのあとに、必要ならWER送信経路でも関連ファイルを登録する方が実務向きとされる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/api/werapi/nf-werapi-werregisterfile> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wer-localdumps/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/crash-dump/> ;
    schema:description "WER LocalDumpsは、落ちたプロセスの外にユーザーモードのクラッシュダンプを生成・保存する実装を担う"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/wer/collecting-user-mode-dumps> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/fatal-crash-marker/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/winforms-threadexception/> ;
    schema:description "Application.ThreadExceptionのハンドラーでは最小記録として最終クラッシュマーカーを書き、そのうえでプロセスを終了させダンプとログを残す方が安全とされる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.application.threadexception> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .
