@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/06/10/000-pdb-program-database/#article>
    schema:about <https://comcomponent.com/knowledge/pdb/> ;
    schema:mentions <https://comcomponent.com/knowledge/portable-pdb/>, <https://comcomponent.com/knowledge/windows-pdb/>, <https://comcomponent.com/knowledge/debugtype-msbuild/>, <https://comcomponent.com/knowledge/embedded-pdb/>, <https://comcomponent.com/knowledge/source-link/>, <https://comcomponent.com/knowledge/symbol-server/>, <https://comcomponent.com/knowledge/snupkg/>, <https://comcomponent.com/knowledge/public-symbols/>, <https://comcomponent.com/knowledge/private-symbols/>, <https://comcomponent.com/knowledge/dump-analysis/>, <https://comcomponent.com/knowledge/stack-trace-line-number/>, <https://comcomponent.com/knowledge/just-my-code/>, <https://comcomponent.com/knowledge/cicd-pdb-retention/>, <https://comcomponent.com/knowledge/deterministic-build/>, <https://comcomponent.com/knowledge/pdb-loss/>, <https://comcomponent.com/knowledge/pdb-external-distribution/>, <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 ;
    ks:configuredBy <https://comcomponent.com/knowledge/debugtype-msbuild/> .

<https://comcomponent.com/knowledge/stack-trace-line-number/> a skos:Concept ;
    skos:prefLabel "スタックトレースのファイル名・行番号表示"@ja ;
    skos:definition ".NETの例外スタックトレースで、対応するソースファイル名と行番号まで表示させる機能。PDBが読み込まれているときに有効になる。"@ja ;
    ks:requires <https://comcomponent.com/knowledge/pdb/> .

<https://comcomponent.com/knowledge/dump-analysis/> a skos:Concept ;
    skos:prefLabel "ダンプ解析"@ja ;
    skos:definition "クラッシュやハングなどで取得したプロセスのダンプファイルから、スタックや変数、型を人間が読める名前やソース行に変換して調べる作業。"@ja ;
    ks:requires <https://comcomponent.com/knowledge/pdb/> .

<https://comcomponent.com/knowledge/windows-pdb/> a skos:Concept ;
    skos:prefLabel "Windows PDB"@ja ;
    skos:definition "Visual C++や.NET Framework時代のプロジェクトなど、従来のWindowsネイティブ開発で使われるPDB形式。"@ja ;
    ks:incompatibleWith <https://comcomponent.com/knowledge/snupkg/> .

<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/snupkg/> a skos:Concept ;
    skos:prefLabel ".snupkg(NuGetシンボルパッケージ)"@ja ;
    skos:definition "NuGetのシンボルパッケージ形式で、管理コードのPortable PDBを配布するために使う。NuGet.orgのシンボルサーバーではPortable PDBのみサポートされる。"@ja ;
    skos:altLabel "NuGetシンボルパッケージ"@ja ;
    ks:requires <https://comcomponent.com/knowledge/portable-pdb/> ;
    ks:storedIn <https://comcomponent.com/knowledge/symbol-server/> .

<https://comcomponent.com/knowledge/portable-pdb/> a skos:Concept ;
    skos:prefLabel "Portable PDB"@ja ;
    skos:definition ".NET/.NET Core以降で使われる、Windowsだけでなくクロスプラットフォームで扱えるPDB形式。"@ja .

<https://comcomponent.com/knowledge/symbol-server/> a skos:Concept ;
    skos:prefLabel "シンボルサーバー"@ja ;
    skos:definition "PDBなどのシンボルファイルを、ファイル名ではなくバイナリとの一致情報に基づいて整理し、デバッガーが必要なときに取得できるようにする仕組み。"@ja .

<https://comcomponent.com/knowledge/debugtype-msbuild/> a skos:Concept ;
    skos:prefLabel "DebugType(MSBuildプロパティ)"@ja ;
    skos:definition "C#プロジェクトのcsprojで、PDBの出力形式(portable/embedded/full/pdbonly/none)を指定するMSBuildプロパティ。"@ja ;
    skos:altLabel "DebugType" .

<https://comcomponent.com/knowledge/embedded-pdb/> a skos:Concept ;
    skos:prefLabel "embedded PDB"@ja ;
    skos:definition "DebugTypeをembeddedに指定し、Portable PDB相当のデバッグ情報を別ファイルにせず.dll/.exeへ埋め込む方式。"@ja ;
    ks:configuredBy <https://comcomponent.com/knowledge/debugtype-msbuild/> .

<https://comcomponent.com/knowledge/source-link/> a skos:Concept ;
    skos:prefLabel "Source Link"@ja ;
    skos:definition "PDBに記録されたリポジトリ情報とコミット参照を使って、デバッガーがGitHub等からそのバイナリをビルドしたコミット時点のソースファイルを取得できるようにする仕組み。"@ja ;
    ks:requires <https://comcomponent.com/knowledge/pdb/> .

<https://comcomponent.com/knowledge/just-my-code/> a skos:Concept ;
    skos:prefLabel "Just My Code"@ja ;
    skos:definition "デバッグ対象を「自分のコード」に絞り、外部コードへのステップ実行をしにくくするVisual Studio全体のグローバル設定。"@ja .

<https://comcomponent.com/knowledge/cicd-pdb-retention/> a skos:Concept ;
    skos:prefLabel "CI/CDでのPDB保管"@ja ;
    skos:definition "コミットID・ビルド番号・成果物(.dll/.exe/.pdb)をセットで保管し、本番バイナリに対応するPDBを後から取り出せるようにするCI/CDの運用。"@ja ;
    ks:recommendedFor <https://comcomponent.com/knowledge/pdb/> ;
    ks:prevents <https://comcomponent.com/knowledge/pdb-loss/> .

<https://comcomponent.com/knowledge/pdb-loss/> a skos:Concept ;
    skos:prefLabel "PDBの喪失"@ja ;
    skos:definition "PDBを削除してしまい、同じコミットから再ビルドしても完全な再現が難しく、後から調査に取り返しがつかなくなること。"@ja .

<https://comcomponent.com/knowledge/deterministic-build/> a skos:Concept ;
    skos:prefLabel "決定的ビルド(Deterministic Build)"@ja ;
    skos:definition "同じソース・同じ設定からビルドすれば同一の成果物が得られるようにするビルドの性質。.NETコンパイラのDeterministicオプションや`ContinuousIntegrationBuild`プロパティで関わる。"@ja ;
    skos:altLabel "ContinuousIntegrationBuild" .

<https://comcomponent.com/knowledge/private-symbols/> a skos:Concept ;
    skos:prefLabel "private symbols"@ja ;
    skos:definition "ローカル変数・型・引数などを含む、完全に近い内部情報を持つシンボル情報。"@ja ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/pdb-external-distribution/> .

<https://comcomponent.com/knowledge/pdb-external-distribution/> a skos:Concept ;
    skos:prefLabel "PDBの外部配布"@ja ;
    skos:definition "顧客やライブラリ利用者など社外へPDB・シンボル情報を渡す場面。内部構造の露出とデバッグ可能性のバランスを取る必要がある。"@ja .

<https://comcomponent.com/knowledge/public-symbols/> a skos:Concept ;
    skos:prefLabel "public symbols"@ja ;
    skos:definition "関数名やアドレスなど、公開用に絞られたシンボル情報。"@ja ;
    ks:recommendedFor <https://comcomponent.com/knowledge/pdb-external-distribution/> .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/stack-trace-line-number/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/pdb/> ;
    schema:description ".NETの例外スタックトレースでファイル名・行番号まで表示させるには、対応するPDBが読み込まれている必要がある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/diagnostics/symbols> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dump-analysis/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/pdb/> ;
    schema:description "ダンプに写るスタックやモジュールを人間が読める名前やソース行へ変換するには、対応するPDBが必要になる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-dump> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dump-analysis/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/windows-pdb/> ;
    schema:description "ネイティブコードを含むダンプ解析では、アドレス・関数・型・ローカル変数を読むためにWindows PDBが重要になる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dump-analysis/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/windbg/> ;
    schema:description "ネイティブを含む場合のダンプ解析では、WinDbgのシンボル設定が重要になる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-pdb/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/snupkg/> ;
    schema:description "NuGet.orgのシンボルサーバーではPortable PDBのみサポートされ、C++などが生成するWindows PDBは.snupkgとして受け付けられない"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/nuget/create-packages/symbol-packages-snupkg> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/snupkg/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/portable-pdb/> ;
    schema:description ".snupkgは基本的に管理コードのPortable PDB向けの配布形式である"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/nuget/create-packages/symbol-packages-snupkg> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/snupkg/> ;
    rdf:predicate ks:storedIn ;
    rdf:object <https://comcomponent.com/knowledge/symbol-server/> ;
    schema:description ".snupkgとして公開したシンボルパッケージはNuGet.orgのシンボルサーバーに保存され、デバッグ時に必要な分だけ取得される"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/nuget/create-packages/symbol-packages-snupkg> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/portable-pdb/> ;
    rdf:predicate ks:succeeds ;
    rdf:object <https://comcomponent.com/knowledge/windows-pdb/> ;
    schema:description ".NET Core以降のSDKスタイルプロジェクトでは、既定でPortable PDBが使われるようになり、Windows PDBは.NET Frameworkや従来のVisual C++開発で見る機会が中心になっている"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/symbols-portable-pdb> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/pdb/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/debugtype-msbuild/> ;
    schema:description "PDBの生成有無・出力形式(portable/embedded/full/pdbonly/none)はcsprojのDebugTypeプロパティで構成する"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/code-generation> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/embedded-pdb/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/debugtype-msbuild/> ;
    schema:description "DebugTypeをembeddedに指定すると、Portable PDB相当のデバッグ情報が別ファイルではなく.dll/.exeへ埋め込まれる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/code-generation> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/source-link/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/pdb/> ;
    schema:description "Source Linkは、PDBに記録されたリポジトリ情報とコミット参照があって初めて機能する仕組みである"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/compatibility/sdk/8.0/source-link> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/source-link/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/just-my-code/> ;
    schema:description "Just My Codeが有効で外部コード扱いのままだと、Source Linkが設定されていても外部ライブラリへのステップインができない"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/visualstudio/debugger/just-my-code> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/pdb/> ;
    rdf:predicate ks:storedIn ;
    rdf:object <https://comcomponent.com/knowledge/symbol-server/> ;
    schema:description "シンボルサーバーで配布・保管する場合、PDBはファイル名ではなくバイナリとの一致情報に基づいて整理された形で保存・発行できる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/cicd-pdb-retention/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/symbol-server/> ;
    schema:description "CI/CDでのPDB保管パターンの1つとして、ビルド時にPDBを社内シンボルサーバーへ発行する運用がある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/cicd-pdb-retention/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/pdb/> ;
    schema:description "本番障害調査に備えて、ビルドで生成されたPDBをコミットID・ビルド番号と紐づけてCI/CDの成果物として必ず保管することが本記事の一貫した推奨である"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/diagnostics/symbols> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/cicd-pdb-retention/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/pdb-loss/> ;
    schema:description "コミットID・ビルド番号と紐づけてPDBをCI/CDの成果物として保管しておけば、PDBの喪失によって調査ができなくなる事態を防げる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-symbol> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/deterministic-build/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/pdb-loss/> ;
    schema:description "決定的ビルドを整えていれば、SDKバージョンやNuGet解決結果のズレによる再現性の低さは軽減されるが、それでも保管が最優先とされる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/code-generation> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/private-symbols/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/pdb-external-distribution/> ;
    schema:description "ローカル変数名や型情報などの詳細を含むprivate symbolsは、外部へ配布するシンボルとしては推奨されない"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/public-and-private-symbols> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/public-symbols/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/pdb-external-distribution/> ;
    schema:description "関数名やアドレスなど公開用に絞ったpublic symbolsは、外部へ配布する際に本記事が推奨する形である"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/public-and-private-symbols> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/symbol-server/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/pdb-external-distribution/> ;
    schema:description "外部配布アプリケーションではPDBをそのまま同梱せず、public symbolsに絞る、またはシンボルサーバー経由で必要な分だけ取得させる、といった選択肢を取ることが本記事で推奨されている"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .
