Debian でデバッグするためのソースコードの場所は何ですか?

Debian でデバッグするためのソースコードの場所は何ですか?

Debian でデバッグパッケージ、2つの部分で構成される実行可能ファイルを作成するときに、実行可能ファイルのデバッグ情報ファイルが入っていることがわかります/usr/lib/debug(つまり、実行可能ファイルのシンボルを削除して別のファイルに入れます)。

しかし、シンボルファイルはソースファイルを参照しているので、ソースファイルをどこに配置するのかわかりません。 Red Hat / Fedoraは、その場所がどこにあるかを知っています/usr/src/debug(Fedoraの説明によると)。パッキング:デバッグ情報)。

Debian でデバッグ用のソースファイルはどこに配置する必要がありますか?


具体的な例は Crypto++ です。GNUMakefile以下を追加するパッチがあります。

IS_DEBIAN = $(shell uname -a 2>&1 | $(EGREP) -i -c "debian|ubuntu|mint")
...

# https://wiki.debian.org/DebugPackage
ifeq ($(IS_DEBIAN),1)
  DEBUG_SYM_DIR ?= /usr/lib/debug/cryptopp
  DEBUG_SRC_DIR ?= /usr/src/debug/cryptopp
endif
...

それでは、次の象徴的なレシピがあります。

symbol symbols:
    $(MKDIR) -p $(DEBUG_SYM_DIR) $(DEBUG_SRC_DIR)
    -objcopy --only-keep-debug cryptest.exe cryptest.exe.debug
    -objcopy --only-keep-debug libcryptopp.so libcryptopp.so.debug
    -strip --strip-debug --strip-unneeded cryptest.exe
    -strip --strip-debug --strip-unneeded libcryptopp.so
    -$(CP) cryptest.exe.debug $(DEBUG_SYM_DIR)/
    -$(CP) libcryptopp.so.debug $(DEBUG_SYM_DIR)/
    -objcopy --add-gnu-debuglink=$(DEBUG_SYM_DIR)/cryptest.exe.debug cryptest.exe
    -objcopy --add-gnu-debuglink=$(DEBUG_SYM_DIR)/libcryptopp.so.debug libcryptopp.so
    -$(CP) *.h *.cpp $(DEBUG_SRC_DIR)/

したがって、ワークフローは次のようになります。

cd cryptopp
make static dynamic test
sudo make symbols
sudo make install

関連があるが関係がない(誰がコメントしたい場合):他のレシピの依存関係でシンボルを追加できないか、単にバグがmake symbols原因ですobjcopy(バグだと思います。参照)。Binutilのバグ18064 - objcopy、add-gnu-debuglink、および「デバッグリンクセクションを埋めることができません」)。

答え1

Debian バイナリパッケージにはソースコードは含まれていません。ただし、ソースコードを使用して他のパッケージをビルドできるまれな場合は例外です(例えば liblzo2-devforminilzo.cなど)または多くのユーザーがソースコード(カーネルソースコードなど)binutils-sourcegcc-4.9-source簡単にインストールできるようにしたいです。ソースコードは、が提供するソースコードパッケージの形式で提供されますdpkg-buildpackage

apt-get sourceあなたの場合、Debianパッケージのソースコードをインストールする方法は次のとおりです。

apt-get source cryptopp

ユーザーは書き込みアクセス権を持っているどこでもこれを行うことができます。つまり、正式なソース位置はありません。また、パッケージはどこでもビルドできるため、パッケージが保存されているソースの場所も変更される可能性があります...(Debianには次のような興味深い機能があり/usr/srcますsrc。コードを提供するバイナリパッケージをインストールせsrcずにこのディレクトリを使用できます。root/usr/src

したがって、Debianでそのソースコードを含むデバッグパッケージを使用するには、デバッグパッケージをインストールし、上記のように一致するソースコードを入手し、andステートメントを使用してgdb一致する方法を教えてください。directoryset substitute-pathgdbドキュメント詳細はこちら)。

パッケージ化の面ではソースパッケージが把握して処理し、使用するとdebhelperデバッグパッケージも把握して処理します(9.20151219バージョンベース)。

関連情報