2016-04-13 18 views
0

私はVisual Studioでw3wpプロセスの 'リリース'展開のダンプファイルをデバッグしようとしています。Visual Studioで 'リリース'ダンプをデバッグする方法は?

私はコードにステップインしようとすると、過去に働いていたにもかかわらず、「PDBがイメージと一致しません」と言います(マシン上の正確なコミットを再構築し、生成されたPDBを指摘しました)。

どのように私はこのダンプをデバッグすることができます/将来のダンプをデバッグすることができますか?あなたは、一般的にPDBSを使用することはできません

おかげ

+0

PDBはビルドごとに作成されるため、古いビルドをデバッグする場合は、PDBサーバーなどを使用してPDBを保持する必要があります。つまり、マネージコードにはPDBなしで多くのシナリオをデバッグできるだけのメタデータがありますが、SOSでWinDbgを使用する必要があります。 –

答えて

0

は、ソースコードが同じであっても、別のビルド用に生成 - デバッガがすべてのビルドを変更しますGUIDと年齢(カウンタ)を配置します。これらの2つの値は、デバッガがpdbを使用しようとする前でも一致しなければなりません。

と言えば、それをchkmatchで強制することができます。あなたが運が良ければ、新しいビルドはリリースされたものと十分に似たレイアウトを持つでしょう。あなたの可能性を高めるために、ソースコードの場所(ソースファイルへの絶対パスの長さはバイナリの内部レイアウトに影響を与えるかもしれません)を含め、可能な限り環境を構築するようにしてください。

元のビルドにデバッグ情報がないと動作しませんでした。

これらの問題が今後発生しないようにするには、常にリリース情報をデバッグ情報とともにビルドし、リリースビルド用のpdbsを保存してください。

EDIT:C#プロジェクトの場合

、PDBSは、プロジェクトのプロパティで制御されている - >ビルド - >高度なビルド設定] - > [デバッグ情報。リリースビルドでは "pdb-only"に、デバッグでは "full"に設定します(デフォルトにする必要があります)。 Pdbのみはリリースビルドのパフォーマンスに影響を与えません。

デプロイメント環境を制御すると、リリースバイナリでpdbsをすぐにデプロイすることができます。

エンドユーザにバイナリを与える場合、リバースエンジニアリングを制限したい場合は、通常はpdbsを自分自身に保つ方が良いです。

バイナリの特定のバージョンを気にしている限り、どんなケースでもそれを維持してください。

+0

詳細な応答をいただきありがとうございます。どうすればデバッグ情報を使ってリリースビルドをビルドできますか?また、これらを私の運用サーバーにアップロードすると、パフォーマンス上のオーバーヘッドが発生しますか? – Ron

+0

ちょっと、明らかに、PDBはMSBuildによってリリース用のファイルをパッキングされています。私たちはビルドを修正し、新しいバージョンをデプロイしました。うまくいけば、次のダンプはデバッグ可能です。ありがとう! – Ron

関連する問題