31

windbgをもっと使用しようとしていますが、シンボルキャッシュで問題が発生し続けています。文字列の形式がどうあるべきかは私にはわかりません。

私にはいくつかの要件があります:

  • Microsoftのサーバーを使用するhttp://msdl.microsoft.com/download/symbols
  • \\ foo\Build1234にアーカイブされているソフトウェアのシンボルを使用する
  • c:\ dev\symbolsでローカルキャッシュを使用します

\\ foo \ Build1234にある分散ビルドからのシンボルのアーカイブは、シンボルサーバーとして編成されていません。正しく理解できれば、cacheキーワードを使用する必要があります。

これらの要件を考えると、これは適切にフォーマットされたsrvpathのように見えますか?

cache*\\foo\Build1234;srv*c:\dev\symbols*http://msdl.microsoft.com/download/symbols

編集:

Advanced Windows Debuggingを読み始めたばかりで、cacheキーワードがどのように機能するかを誤解していました。これは、フォルダーが単なるファイルのフォルダーであり、シンボルサーバーではないことをデバッガーに伝える方法だと思いました。Michaelがコメントを残した後、私はそのセクションを読み直して、Michaelが説明したように実際に機能することを確認しました。

今、私はあなたが;を使うとき混乱しています。または*でパス/URLを区切ります。また、srv*プレフィックスが必要な場合。windbgのオンラインヘルプでは、次の例を示しています。

\\someshare\that\cachestar\ignores;srv*c:\mysymbols*http://msdl.microsoft.com/download/symbols;cache*c:\mysymbols;\\anothershare\that\gets\cached

\\ someshareのシンボルはキャッシュされず、Microsoftのシンボルはc:\ mysymbolsにキャッシュされ、c:\ mysymbolsは、cache*ディレクティブの右側にある他のパスのキャッシュとして使用されます。

srv *をときどき使用すると、混乱します。最初と最後のパスの前にsrv*が付いていない理由がわかりません。

編集2:

これはゆっくりと私には意味をなし始めています。srvディレクティブは、通常のシンボルディレクトリではなく、シンボルサーバーに使用されます。だから、私の最初の質問への答えはこれだと思います:

\\foo\Build1234;cache*c:\dev\symbols;srv*http://msdl.microsoft.com/download/symbols
4

2 に答える 2

39
SRV*C:\dev\symbols*http://msdl.microsoft.com/download/symbols;\\foo\build1234

\\foo\build1234フラットなPDBであれば、問題なく動作するはずです。ここではキャッシュは必要ありません。ディレクトリをシンボルパスに追加するだけです。

\\foo\build1234cacheキーワードは、シンボルファイルをキャッシュする場所を指定し、インデックス付けされていない共有(など)からローカルにシンボルをキャッシュする場合に役立ちます。

cache*C:\dev\symbols;SRV*C:\dev\symbols*http://msdl.microsoft.com/download/symbols;\\foo\build1234

上記のパスは、MSのシンボルサーバーとシンボル共有からC:\ dev\symbolsのローカルマシンへのシンボルを格納します。

windbgを使用してシンボルの問題をデバッグするには、次のようにします。

!sym noisy
.reload <some exe or DLL in your session>

次に、PDBを強制的にロードするアクションを実行します。windbgがファイルを探している場所と、PDBを拒否した場合の理由がわかります。

!sym quiet

その後、シンボルプロンプトを抑制します。

于 2009-06-08T21:28:50.050 に答える
2

シンボルの読み込みに関するデバッグの問題に関する詳細な投稿は次のとおりです。

Windbgにシンボルをロードする

于 2013-10-17T19:13:38.413 に答える