問題タブ [symbol-server]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
dbghelp - SymGetSymFromAddr32 でのデッドロック
実行可能ファイルのテスト バージョンで SymGetSymFromAddr32 を呼び出しています。最近までこれは正しく機能していましたが、Windows SDK 8.1 の dbghelp.dll と symsrv.dll を使用すると、この関数を呼び出すとアプリケーションがハングします。
これは私が得るコールスタックです:
これは、Windows SDK 8.1 の DLL を使用した場合です (バージョン 6.3.9600.17200 および 6.3.9600.17298 を試しました)。
Windows SDK 8.0 (バージョン 6.2.9200.20512) から DLL に戻すと、アプリケーションは正しく動作し、ハングしなくなりました。
注: 正しい dbghelp.dll (Windows にデフォルトでインストールされているものではなく、シンボル サーバーをサポートするもの) を使用していることを確認するために、LoadLibrary を使用して dbghelp.dll を明示的にロードし、symsrv.dll を同じフォルダーに保存します。 .
助言がありますか?
nuget - SymbolSource サーバー基本の構成方法
Xavier Decosters ブログ エントリの指示に従って、 SymbolSource Server Basicをインストールして実行しています。
SymbolSource の推奨に従ってVisual Studio をセットアップしました
問題は、Visual Studio が要求するすべての URL に対して Symbol Server が 404 を返すことです。
pdb をロードしようとすると、Visual Studio は次の URL にアクセスします。
http.../WinDbg/pdb/MightyLittleGeodesy.pdb/82A03D09EC754F5893C3806CDA329EC92/MightyLittleGeodesy.pdb
http.../WinDbg/pdb/MightyLittleGeodesy.pdb/82A03D09EC754F5893C3806CDA329EC92/MightyLittleGeodesy.pd_
http.../WinDbg/pdb/MightyLittleGeodesy.pdb/82A03D09EC754F5893C3806CDA329EC92/file.ptr
SymbolServer Web サイトには次のものがあります。
\...\Data\MightyLittleGeodesy\1.0.0.0\Binaries\MightyLittleGeodesy\82A03D09EC754F5893C3806CDA329EC92\MightyLittleGeodesy.pdb
ブラウザーで多数の URL バリエーションを試しましたが、Symbol サーバーがそれらのいずれに対しても 404 以外を返すことができません。
ここで何をすべきか知っている人はいますか?
ありがとう - セッド
debugging - Windows 8.1 で wmp.dll のシンボルが見つからない
Windows 8.1 で wmp.dll のデバッグ シンボルを読み込もうとすると、symchk はそれらが Microsoft シンボル サーバーに存在しないことを示します (以下を参照)。Windows 8.1 x86 32 ビット リテール シンボルもインストールしました。これには、他のすべての WMP ファイル (wmplayer、wmpeffects、wmpshell など) のシンボルが含まれていますが、wmp.dll のシンボルは含まれていません。
また、既知のアドレスにメールを送信しましwindbgfb [at] microsoft [dot] com
たが、応答がありません。これらのシンボルを利用可能にするように Microsoft に依頼する方法はありますか?
ところで、wmp.dll の私のバージョンは 12.0.9600.17415 です。これは、Windows 8.1 に付属していた元のバージョンであると確信しています。新しいバージョンを含む Windows Update はインストールされていません。
visual-studio-2013 - SymbolSource は例外でソース コードを提供しません
私たちは独自の nuget サーバーを維持しており、最近、SymbolSource サーバー ( http://www.symbolsource.org/ ; Web サイトは現在応答していません。代わりに、Web サイトの google cache または archive.org バージョンを試してください。ライブラリnuget で利用できる SymbolSource サーバーをセットアップする必要があります。) .pdbs とソースで nuget サーバーを補完します。この一連のインストール手順に従った後 ( http://www.xavierdecoster.com/setting-up-your-own-symbolsource-server-step-by-step) テスト ナゲット パッケージのシンボルをアップロードできました。Visual Studio 2013 がローカルでソースを見つけられないように、ナゲット形式で使用したマシンとは別のマシンでテスト パッケージを作成しました。Visual Studio 2013 の [ツール]、[オプション]、[デバッグ]、[シンボル] に SymbolSource サーバーのエントリを追加しました。[ツール]、[オプション]、[デバッグ]、[全般] で、[自分のコードだけを有効にする] のチェックを外し、[ソース サーバーのサポートを有効にする] をチェックし、[ソース ファイルが元のバージョンと完全に一致する必要がある] のチェックを外しました。
私のテスト ナゲット パッケージには意図的なエラー (0 による除算) が含まれていたので、何か興味深いものがあると思います。ホスト アプリケーションを作成してテスト ナゲット パッケージを追加し、エラーへのパスを呼び出すと、例外が発生しましたが、ソース コードを表示する代わりに、ソース .cs ファイルの場所を尋ねるダイアログ ボックスが表示されました。テスト ナゲット パッケージのソース コードは、それを使用するプロジェクトのマシン上にないため、[キャンセル] をクリックせざるを得ませんでした。Visual Studio は、nuget パッケージの外側のコードで壊れました。それは私が望んでいたものではありませんでした。Visual Studio が SymbolSource サーバーからソース コードを公開することを期待していました。
.pdb は正しくダウンロードされていました。呼び出し元のコードにブレークポイントを設定し、nuget パッケージからオブジェクトへの呼び出しに踏み込むと、nuget パッケージの正しいソース コードが表示されます。次に、nuget オブジェクトで例外をスローするコードを呼び出した場合、上記で期待したとおり、デバッガーは nuget パッケージのソースで中断しました。これが発生したら、プロジェクトを閉じて再起動できます。ナゲット アセンブリ内のブレークは、SymbolSource サーバーからダウンロードしたソース コードをポップアップ表示します。
私が推測できる限り、nuget パッケージで例外が発生すると、Visual Studio 2013 は .pdb ファイルをダウンロードします (または既にダウンロードしています)。次に、必要なソース ファイルを認識しますが、例外が発生した場合、SymbolSource サーバーからソースをダウンロードしません。代わりに、ローカル マシン上のソース ファイルの場所を尋ねるダイアログ ボックスが開きます。ソース コードが別の理由でダウンロードされた場合 (たとえば、そのソース コードに足を踏み入れた場合)、以前にダウンロードされたソース コードが検索されます。
これは、Visual Studio のバグであるか、Visual Studio の設定が抜けているようです。以前に nuget パッケージのコードにステップインせずに、例外で SymbolSource サーバーからソース コードをダウンロードするために、他に何かする必要がありますか?
debug-symbols - デバッグ中に無関係なシンボルがプライベート シンボル サーバーに表示される
プライベート シンボル サーバーがあります (共有ネットワーク ドライブ内のフォルダーのみ)。少し前に、私たちのものではない多くの DLL (System.Xml、clr、kernel32 など) のシンボルが含まれていることに気付きました。_NT_SYMBOL_PATH
環境変数は、ローカル キャッシュの場所SRV*c:\symbols*G:\Foundations\Symbols*http://msdl.microsoft.com/download/symbols
に設定され、ネットワーク ドライブにマップされます。これは、 https ://msdn.microsoft.com/en-us/library/windows/desktop/ee416588(v=vs.85).aspx#symbol_servers の指示に従っています。c:\symbols
G
今日、すべての非プライベートシンボルがどのようにそこに到達したかを最終的に理解しました。プライベート シンボル サーバーから clr.pdb フォルダーを削除し、ClrMD を使用してダンプのデバッグを開始しました。clr シンボルをローカル キャッシュに保存するだけでなく、プライベート シンボル サーバーにも再表示されました。
これを防ぐにはどうすればよいですか?私たちのプライベート シンボル サーバーに、スペースを占有し、フォルダーを乱雑にする無関係なガベージを含めたくありません。[そこにはすでに約 2600 のフォルダがあり、おそらく 90% は私たちのものではありません。これをきれいにする方法が想像できません...]
更新 1 :
したがって、別のMSDN ページ ( https://msdn.microsoft.com/en-us/library/windows/desktop/ms681416(v=vs.85). aspx。
さらに別のドキュメント ページ ( https://msdn.microsoft.com/en-us/library/windows/desktop/ms680689(v=vs.85).aspx )によると、cache
要素を使用すると、特定のフォルダーがキャッシュとしてマークされます。ただし、設定によって_NT_SYMBOL_PATH=CACHE*c:\symbols;SRV*G:\Foundations\Symbols*http://msdl.microsoft.com/download/symbols
プライベート シンボル サーバーへのシンボルの追加が妨げられることはなく、設定_NT_SYMBOL_PATH=CACHE*c:\symbols;SRV*G:\Foundations\Symbols;SRV*http://msdl.microsoft.com/download/symbols
によって奇妙な動作が引き起こされました。分析していたダンプ... VSで同じダンプを開くと、正常に機能しました。だから私はClrMDがどういうわけかシンボルパスで何か違うことをしていると思います...