10

CMakeコマンドを使用してPDBファイルをインストールし、C++アプリケーションの開発者向けディストリビューションでデバッグを有効にしています。コマンドは次のとおりです。

INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/Debug
    DESTINATION bin
    FILES_MATCHING
    PATTERN *.pdb
)

また、開発者向けディストリビューションの構築に使用した関連ソースを同じレベルの「src」フォルダーにインストールして、最上位のディストリビューションフォルダーが次のようになるようにしました。

include\
src\
lib\
bin\
share\
doc\
3rdparty\
etc\

ソースがどこにあるかをPDBファイルに「知らせる」にはどうすればよいですか(これが必要であると想定しています)?これを実現できるCMakeコマンドはありますか?小さな例は何でしょうか?

4

4 に答える 4

14

How to get CMake to install PDB files for targetsという自分自身の同様の質問に答えたところです。

このインストール ルールを使用して、ターゲットの PDB ファイルが存在する場合は、それをターゲットのインストール場所の bin ディレクトリにコピーします。

install(FILES $<TARGET_PDB_FILE:${PROJECT_NAME}> DESTINATION bin OPTIONAL)
于 2016-11-29T07:56:32.233 に答える
4

PDB ファイルには、ソース ファイルへの絶対パス名が格納されます。シンボル サーバーを使用しない場合、ある程度のソース コードの再配置可能性を確保する唯一の方法は、substコマンドを使用することです。

アイデアは、ソース ツリーのルートのsubstドライブ文字名 (例: ) を作成するために使用することです。N:\次に、このドライブからビルドを実行して、 で始まる絶対パスN:\が PDB ファイルに組み込まれるようにします。後で別のマシンで実行可能ファイルをデバッグする必要がある場合はsubst、そのマシンで を使用して、ソースへの同じ絶対パスを取得します。これにより、PDB ファイルがソース ファイルを見つけられるようになります。

たとえば、ファイルがある場合C:\MySources\main.cppは、次のようにします。

subst N: C:\MySources
N:
run your build

後で、同じファイルが に保存されているマシンでデバッグする必要があるとしますD:\Devel\Other\main.cpp。単に実行してから、ドライブsubst N: D:\Devel\Otherからも作業してください。N:


この回答は、主にこの質問とその中のリンクからの情報に基づいています。

于 2013-03-04T11:26:30.600 に答える
2

ソースがどこにあるかをVisual Studioに通知するだけです...ファイルブラウザダイアログがポップアップします。ビルド時とパスが異なる場合は、ローカル マシン上のソースを指定するだけです。

于 2013-09-18T21:03:12.877 に答える
0

PDB ファイルには、プログラムがコンパイルされたときのファイルへのパスが格納されます。ソースがどこにあるかを彼らに知らせるためにあなたがしなければならないことは何もありません。

于 2013-02-18T23:00:41.773 に答える