問題タブ [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.
.net - Visual Studio でこのコード行をデバッグするにはどうすればよいですか?
VS2008 に次のコード行があります。
このメソッドをデバッグGetVirtualpath(..)
して、何をしようとしているのかを確認したいと思います。
MS シンボル サーバーからシンボルを取得する必要があると想定しています。
私がしたことは
- オフにする 自分のコードのみを有効にする
- ソースサーバーのサポートを有効にする
- デバッグ時に [モジュール] ウィンドウを表示する (正しいモジュールを手動でロードするため)
デバッグモードでコンパイルし、その行にブレークポイントを置き、デバッグ実行します。行にヒットしたら、 MS Symbol サーバーSystem.Web.Routing(..)
から手動で読み込みます。これは機能し (pdb はローカルにダウンロードされます)、この行にステップインすると、いくつかの Dissassemler コードに移動します :(
誰かが私が間違っていることを見ることができますか?
windows - 年齢が一致しない PDB を適切に一致するように変更するにはどうすればよいですか?
私たちの夜間のビルド プロセスは、対応する画像ファイルとは数時間異なる PDB ファイルを生成するなど、長い間機能していませんでした。その後、問題を修正しました。
ただし、シンボル サーバーの使用を開始したいのですが、これらの年齢が一致しない pdb ファイルを使用する必要があるため、使用できません。この問題を回避するには、windbg で .symopt +0x40 メソッドを使用します。つまり、すべての pdb ファイルを手作業で整理する必要があり、何年にもわたるリリースの後、それが積み重なっていきます。
windbg が pdb の経過時間をマークするために使用するメカニズムを変更し、強制的にイメージ ファイルと一致させる方法を探しています。ユーティリティChkMatchは同様のことを行いますが、pdb 署名用です。開発者はページで「ChkMatch は、実行可能ファイルと PDB ファイルの署名が異なるが同じ年齢である場合、それらを一致させることができます (PDB 署名と年齢の詳細については、この記事を参照してください)。年齢が異なる場合、ツールは作成できません。ファイルが一致します。」
hexeditor の内部を調べたところ、年齢に対応するビットのように見えるものさえ見つかりましたが、動作させることができなかったので、内部でさらにいくつかのトリックを引き出す必要があります。
何か案は?
編集:これが役立つかどうかはわかりませんが、私の特定のケースでは、PDBファイルも再作成する不要なdllの再リンクによって年齢差が発生しました。ただし、ビルド プロセスでは、元の dll (再リンク前) と再リンク後の pdb が格納されていました。そういう状況をどうにか手で再現しようと思いました。つまり、DLL の再リンクを強制しますが、どちらの場合も pdb を保存します。次に、2 つのファイルのバイナリ比較を実行して、それらがどのように変更されたかを確認できます。おそらく、これを自動的に行う何らかのパッチソフトウェアを実行しますか? コントロール ケースで正確に何が変更されたかを確認することで、会社のビルド プロセスで保存された DLL と PDB に同じことを行うことができるでしょうか?
編集:私はそれを理解しました!!!! 最初の回答に対するコメントの 1 つを参考に、「文書化されていない Windows 2000 の秘密: プログラマーズ クックブック」という書籍の PDF へのリンクを調べました。また、著者は pdb ファイル形式について詳しく説明しています。前に言ったように、私はすでに pdb を 16 進エディタにロードしており、年齢と署名を一致させたように見えるようにいくつかのビットをひっくり返しましたが、うまくいきませんでした。さて、W2k secrets book のユーティリティを使用して pdb を含まれているストリームに「爆発」させた後、ストリーム 3 に age への別の参照が隠されていることがわかりました!!!!!!!! それもひっくり返したら、windbgで一致しました。これは巨大です!!!! どうもありがとう....シンボル サーバー HERE I COME!
.net - シンボルサーバーの説明
この回答では、ユーザーはシンボルサーバーの使用を提案しています。
誰かが彼らがどのように機能し、TFS2008でそれをセットアップする方法(可能であれば)を説明できますか?
visual-studio-2008 - Visual Studio は Microsoft Symbol Server のキャッシュ ミスをキャッシュしませんか?
Visual Studio 2008 で Microsoft Symbol Server を使用していますが、うまく機能しています。残念ながら、パブリック シンボル サーバーにシンボルが含まれていない場合、タイムアウトになるまでに時間がかかり、デバッグのためにプロジェクトを開始するたびに、Visual Studio は不足している同じシンボルを再読み込みしようとします。
Visual Studioに「ミス」を覚えさせ、しばらくの間気にしないようにする方法はありますか?
hash - Microsoft SymbolServer/ローカルキャッシュハッシュアルゴリズム
Microsoft SymbolLocalCacheディレクトリに使用されているハッシュアルゴリズムを理解しようとしています。
たとえば、ローカルキャッシュは次のようになります。
ファイルとそのデバッグデータベースの間には、ある種の対応関係があるようです。それ以外では、これらの(おそらく)16進文字列フォルダーの名前がどのように生成されているのか理解できません。
それらのいくつかは9桁、いくつかは13桁、その他は33桁です。実際のライブファイル(何らかの理由でシンボルキャッシュに保存されている)には13桁のハッシュがあり、その(ほぼ同様の)デバッグデータベースには9桁のハッシュがあるように見えます。一部のデバッグデータベースは13桁のハッシュを取得します。対応するライブファイルはありませんが、これらが特別な理由を理解することはできません。
私が知っているあらゆる種類のハッシュアルゴリズム(そのうち39個)を使用してファイルをハッシュしようとしましたが、どのような方法でも一致しません(ストレート、リバース、オルタネートエンディアンなど)。
何か案は?
更新 私はついにそれを見つけたと思います。シンボルストレージフォーマットから:
SymStoreは、ファイルシステム自体をデータベースとして使用します。シンボルファイルのタイムスタンプ、署名、年齢、その他のデータなどに基づいたディレクトリ名を使用して、ディレクトリの大きなツリーを作成します。
Dangを編集 してください。残念ながら、ディレクトリ名はさまざまな側面から派生しているとだけ述べられていますが(私が推測するハッシュではありません)、正確な方法については述べていません。検索は続行されます…:-(
windbg - WinDbg、読み込まれたモジュールのシンボル サーバー パスを表示します (シンボルが読み込まれなかった場合でも)?
DbgEng API を使用せずに WinDbg から、読み込まれたすべてのモジュールのシンボル サーバー パス (つまり、 PdbSig70 および PdbAge ) を表示する方法はありますか?
そんなこと知ってる
シンボルがロードされたモジュールに対してこれを行います。問題を診断するために、ロードされなかったシンボルのこれらのパスを知りたいです。DbgEng API を利用しなくてもこれが可能かどうかは誰にもわかりませんか?
編集:
私はまた、あなたが使用できることを理解しています
シンボルの読み込みに関するエラー メッセージを表示します。これには役立つ出力がありますが、必要な他の出力とインターリーブされており、「lml」のように単純で明確ではありません
.net - シンボル サーバーをセットアップすると何が得られますか?
この記事を読みました:シンボル サーバーの設定では、チームの共有シンボル サーバーを設定する方法について詳しく説明しています。
私が疑問に思っているのは、独自のシンボルをストアに追加することです。
私の質問は次のとおりです。これから私が得るものは正確には何ですか?
次のビルド プロセスがあるとします。
- Subversion リポジトリに変更をコミットします
- TeamCity CI ツールがこれらの変更を取得し、ビルド + ユニット テストを実行します。
- バイナリは別の Subversion リポジトリにコミットされます (作成したアプリケーションで参照するため)
上記の 3 番目のポイントに、ビルドされたファイルをシンボル ストアに追加する機能を追加すると、何が得られるでしょうか?
プログラムを作成し、リポジトリにコミットされたバイナリを参照すると、.dll、.pdb、および .xml (インテリセンス サポート) の両方が取得されるため、スタック トレースには必要なものがすべて含まれているように見えます。
これは .pdb の配布に代わるものですか?
それとも、.DMP ファイルを WINDBG で開き、そのスタックを分析する必要があるときだけですか? (つまり、実行可能ファイルはおそらく古いバージョンのものであり、.DMP ファイルしか渡されませんでした)
.net - Visual Studio でのフレームワーク コードのデバッグ
この投稿 ( http://blogs.msdn.com/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx ) は、依然としてデバッグに推奨される方法ですか?ビジュアルスタジオのフレームワークコード? それとも何か変わった?
visual-studio-2008 - VS.NET: ソース サーバーのサポートが有効になっています。sourceserver からソース ファイルを取得できません
現在のプロジェクトの 1 つにシンボル サーバーをセットアップしました。毎晩のビルド中に私は:
- ソースをビルドする
- ビルドで使用されたソースファイルにラベルを適用する
- 必要な情報で pdb ファイルにインデックスを付ける
- MSシンボルサーバーにpdbファイルを保存しました
(実際、私はこの記事に従っています:ソース サーバーはバグを殺すのに役立ちます。
ここで、別のプロジェクトで公開されているシンボルを持つ DLL を参照しました。そのプロジェクトをデバッグし、デバッグ シンボルを発行したプロジェクトのコードにステップ インしたいと考えています。
ソース サーバーのサポートが有効になるように VS.NET をセットアップしました。プロジェクトをデバッグすると、([モジュール] ウィンドウで) 参照されているプロジェクトのシンボルが実際に読み込まれていることがわかります。参照された DLL から派生したメソッドにステップインしようとすると、VS.NET が警告を表示し、VS.NET が実際にコマンドを実行してソース サーバーからソース コードを取得する可能性があることを確認する必要があります。
コマンドは次のようになります。
(簡潔にするために完全なパスは省略しました)。
コマンドを実行すると、「利用可能なソース コードがありません」というエラーが表示されます。
コマンドラインでそのコマンドを実行すると、次のエラーが表示されます。
無効な DOS パス
ターゲットパスが存在しない場合、VSS はこのエラーを返すようです。実際、取得したソース ファイルを配置するローカル パスがディスク上に存在しません。VSS はそれを作成する必要があります。
ソース サーバーからソース コードを取得するときにターゲット パスが作成されるように、VS.NET がコマンドを発行することを確認するにはどうすればよいですか?
編集:
私は自分の探求をもう少し進めることができました。ソース サーバー マシンでファイルを編集し、PDB ファイルに記述されている「ストリーム」内に存在する変数にvss.pm
記述されているコマンドを変更しました。VSS_EXTRACT_CMD
(Perl?) コードを次のように変更しました。
そこで、実際には「存在しない場合... mkdir ...」の部分を追加し、2 つのコマンドをパイプ (|) で区切りました。
VS.NET では、VS.NET によって発行される SourceServer コマンドも出力ウィンドウに書き込むように指定しました。したがって、出力ウィンドウにあるコマンドをコピーして、コマンド プロンプトでそのコマンドを実行すると、ディレクトリが作成され、ファイルが取得されます。\o/
残念ながら、VS.NET がこれを行うと、ファイルは取得されず、ディレクトリも作成されません...何が問題なのかについてのアイデアはありますか?
編集: Windows XP マシンでこれをテストしましたが、動作します。オフィスで Windows Vista を使用していますが、Vista では動作しません。VS.NET がターゲット ディレクトリの作成を許可されていないようです。
visual-studio-2010 - IntelliTrace-SymbolServerが必要だと言います
自動ビルドをIntelliTraceで動作させようとしています。
ビルドに基づいたIntelliTraceファイルをロードすると、次のエラーが発生します。
これは何を意味するのでしょうか?セットアップをインストールする必要があるSymbolServerというサーバータイプはありますか?(MSDNサブスクリプション(プレミアム)にログインすると、Symbol Serverという製品はありません。)
私が本当に望んでいるのは、これを設定する方法のウォークスルーです(私が最初に試すことはできません)。