は、ソースコードが同じであっても、別のビルド用に生成 - デバッガがすべてのビルドを変更しますGUIDと年齢(カウンタ)を配置します。これらの2つの値は、デバッガがpdbを使用しようとする前でも一致しなければなりません。
と言えば、それをchkmatchで強制することができます。あなたが運が良ければ、新しいビルドはリリースされたものと十分に似たレイアウトを持つでしょう。あなたの可能性を高めるために、ソースコードの場所(ソースファイルへの絶対パスの長さはバイナリの内部レイアウトに影響を与えるかもしれません)を含め、可能な限り環境を構築するようにしてください。
元のビルドにデバッグ情報がないと動作しませんでした。
これらの問題が今後発生しないようにするには、常にリリース情報をデバッグ情報とともにビルドし、リリースビルド用のpdbsを保存してください。
EDIT:C#プロジェクトの場合
、PDBSは、プロジェクトのプロパティで制御されている - >ビルド - >高度なビルド設定] - > [デバッグ情報。リリースビルドでは "pdb-only"に、デバッグでは "full"に設定します(デフォルトにする必要があります)。 Pdbのみはリリースビルドのパフォーマンスに影響を与えません。
デプロイメント環境を制御すると、リリースバイナリでpdbsをすぐにデプロイすることができます。
エンドユーザにバイナリを与える場合、リバースエンジニアリングを制限したい場合は、通常はpdbsを自分自身に保つ方が良いです。
バイナリの特定のバージョンを気にしている限り、どんなケースでもそれを維持してください。
PDBはビルドごとに作成されるため、古いビルドをデバッグする場合は、PDBサーバーなどを使用してPDBを保持する必要があります。つまり、マネージコードにはPDBなしで多くのシナリオをデバッグできるだけのメタデータがありますが、SOSでWinDbgを使用する必要があります。 –