2009-07-28 3 views
2

スタティックライブラリプロジェクトのWindows用デバッグツールのソースサーバーツールを使用する方法が見つかりません "ssindex.cmd"の出力は常にライブラリ (コンパイラオプション/ ZIおよび/ Fdを使用)用に生成されたPDBファイルの「ゼロソースファイルが見つかりました」と表示されます。静的ライブラリプロジェクトでソースサーバ(Windows用デバッグツール)を使用できますか?

このPDBで「srctool.exe -r」を実行すると何も表示されず、PDBファイルにはソースファイル情報が含まれていない可能性があります。 同じ解決策の一部としてビルドされたテストアプリケーションのPDBファイルで同じコマンドを実行すると、すべての予想ソースファイルのリストが生成されます。

スタティックライブラリプロジェクトにソースインデックスを使用する方法は、それを使用するソリューションから別にビルドする必要がありますか?

ありがとうございました!

答えて

0

"ssindex"を実行しているときに、正しいディレクトリを入力していない可能性がありますので、ssindexの場合は/ source = C:/ SourceCode// symbols = C:/ SourceCode/bin/Debugです。 "ソース"に大文字のSが含まれているかどうかは分かりませんが、それはそうでなければなりません!

+0

私の場合、パス名の問題は問題にはなりません。バイナリプロジェクト(EXEまたはDLL)のPDBの場合、dia2dumpの出力には、 "Found table:SourceFiles"というラベルのセクションにソースファイルのリスト が含まれています。静的ライブラリプロジェクト用に生成されたPDBファイルでは、 は対応するセクションが常に空であるようです。 これは、 "ssindex"が静的ライブラリプロジェクトでは動作しない理由であると思います。しかし、私はこの情報がPDBに含まれておらず、これを "治療"するコンパイラの設定を見つけられなかった理由は、 では分かりません。 –

3

"/ Save"と "/ Load"オプションを使用して、静的ライブラリのソース情報をそれぞれ格納して読み込むことができます。これらのオプションを使用すると、ライブラリの情報を保存し、後でライブラリにリンクするプロジェクトのインデックスを作成するときに、その情報をインポートできます。

ライブラリソリューションのインデックスを作成するときは、ライブラリのソースファイルに関するインデックス情報を格納するディレクトリとともに "/ Save"フラグを指定します。例えば

ssindex.cmd /System=SVN /Save=c:\source\libproj\srcinfo /Source=c:\source\libproj /Symbols=c:\source\libproj\Release\*.pdb 

後であなたのライブラリーを含んでいるプロジェクトのインデックスを作成するには、ライブラリのソースファイル情報を含むディレクトリを「/ロード」フラグを指定し、(あなたがソース管理のためのSubversionを使用していると仮定)。たとえば、

ssindex.cmd /System=SVN /Load=c:\source\libproj\srcinfo /Source=c:\source\binproj /Symbols=c:\source\binproj\Release\*.pdb 

このテクニックの使用には、2つの潜在的な問題があります。第1に、一部のソース管理プロバイダは、ソース管理情報の保存とロードをサポートしていない可能性があります。私は、Subversionプロバイダは、それがSourceSafeプロバイダのように見えるが、私は他のチェックしていないことを知っている。

第2に、この手法は、すぐに使用できる外部スタティックライブラリの1つに対してのみ機能するように見えます。複数のディレクトリから情報をロードする方法はないようで、 "/保存"オプションを使用するたびにスクリプトは現在ディレクトリの内容を上書きします。おそらく、ソースコントロールプロバイダモジュールを編集して上書きするのではなく、保存ディレクトリのファイルに追加することができますが、試していません。

また、前述のように、ライブラリが別のソリューションの一部として構築されている場合にのみ、これを行う必要があります。静的ライブラリがインデックス作成しているソリューションの一部である場合、ソースファイルは "/ Source"オプションで指定されたパスに含まれていればインクルードされます。

0

svnindex.cmdを実行すると、それは常にあなたのsvnに痛い掘り後

「を見つけゼロのソース・ファイル」を伝えます。

  1. はまず、svn.pmは$ SourceRoot(によって渡さ/内のファイルのすべてのバージョン情報を取得するには、 "SVN情報-R $ SourceRoot" を呼び出す:午後(SVNに対処するためのPerlモジュール)、私はことがわかりましたsourceオプション)、

  2. その後、svn.pm店舗呼び出すsvnindex.cmd

  3. キー

    としてローカルファイルパスを使用して、辞書内のすべてのファイルsrctool -r *の.PDBにすべてのソースファイルの情報を取得します、手順2で保存したクエリ情報のキーとしてソースファイル名を使用します。

問題がある:あなたが

「ゼロのソース・ファイルが見つかった」その後、任意のファイル用のsvnのログ情報を見つけることはありませんので、

svn.pmは、相対パスを使用しますが、* .PDBは、絶対パスを使用しています

フィックスアップ:

変更svn.pmライン162:

$ LOCALFILE = LC $ 1;

~

$ LocalFile = $ SourceRoot "\" lc $ 1; #make path absolute

関連する問題