17

Windows ミニダンプ (C コード) と対応する exe ファイルがあります。残念ながら、正確に一致する .pdb ファイルはありませんが、別の時点でビルドされたまったく同じコードを含む .pdb があります。Windbg では、次を使用できます。

.symopt+0x40

不一致のシンボルファイルであっても、何でもロードするように指示します。これは、この特定のインスタンスではうまく機能し、適切なコール スタックを取得できます。Visual Studio にそのような機能があるかどうかに興味があります。ここでは、ほぼすべての異なるバージョンの VS を使用しているため、どのバージョンであっても問題ありません。ありがとうございます。

4

5 に答える 5

22

このユーティリティを試してください:

ChkMatch ユーティリティを使用して、実行可能ファイルとデバッグ情報ファイルが一致するかどうかを確認できます。また、実行可能ファイルとデバッグ情報ファイルに互換性がある場合は、両者を一致させるためにも使用できます。

デバッグ情報の照合および関連する問題の詳細については、この記事を参照してください。

サポートされているデバッグ情報形式: DBG、PDB 2.0、PDB 7.0...

于 2010-09-23T02:45:52.373 に答える
5

オーバーライドはありませんが、この質問の投稿者は、PDB ファイルを変更して EXE と一致させる方法を見つけました。

最初の回答に対するコメントの 1 つを参考に、「文書化されていない Windows 2000 の秘密: プログラマーズ クックブック」という書籍の PDF へのリンクを調べました。また、著者は pdb ファイル形式について詳しく説明しています。前に言ったように、私はすでに pdb を 16 進エディターにロードしており、年齢と署名が一致しているように見えるようにいくつかのビットをひっくり返しましたが、うまくいきませんでした。さて、W2k secrets book のユーティリティを使用して pdb を含まれているストリームに「爆発」させた後、ストリーム 3 に age への別の参照が隠されていることがわかりました!!!!!!!! それもひっくり返したら、windbgで一致しました。

ここまで面倒くさがりですが、なんとか行けそうです。これが本番サポート用である場合は、しばらく待つ価値があります。

于 2010-10-18T19:48:57.810 に答える
3

Visual StudioとWindbgは、実行可能ヘッダーのタイムスタンプをpdbファイルに格納されているタイムスタンプと比較することでpdbを照合します。dumpin / headersを実行すると、タイムスタンプを表示できます。

私はchkmatchを使用していませんが、exeまたはpdbのいずれかを互いに一致するように変更すると正常に機能するはずです。

この手法では、バイナリをデバッグするには不十分な場合があることに注意してください。John Robbinsは、彼の著書「Debugging Windows」(私がお勧めします)の中で、ほぼ同じ時間にビルドされた同じソースツリーから異なるビルド結果が見られたと述べています。

常にビルド(リリースビルドを含む)でpdbシンボルをビルドし、ビルド製品と一緒にアーカイブし、適切な測定のために.mapファイルを含めます。

于 2010-10-25T12:52:48.507 に答える
0

この投稿によると、ビジュアル スタジオでも sos windbg コマンドを使用できます。ただし、「.symopt」もこのカテゴリに該当するかどうかはわかりません。

于 2010-09-08T08:43:20.360 に答える