デバッグdebパッケージのデバッグシンボルに関連付けられている共有オブジェクトは何ですか?

デバッグdebパッケージのデバッグシンボルに関連付けられている共有オブジェクトは何ですか?

Ubuntu 22.04ディストリビューションで利用可能なさまざまな共有オブジェクトに関連するデバッグシンボルを見つけようとしています。

libssl3たとえば、多くの削除された共有オブジェクトに付属するamd64 debパッケージ(バージョン3.0.2-0ubuntu1)を考えてみましょう。その一つはですlibcrypto.so.3。私の目標は、このELFバイナリのデバッグシンボルを見つけることです。

そのため、Ubuntuランチパッドlibssl3-dbgsymからデバッグシンボルdebパッケージをダウンロードしました。協会)それを抽出します。私が得るものは次のファイルです。

.
├── .build-id
│   ├── 03
│   │   └── 29a35e5964f90f62f114339b04d01fdd279556.debug
│   ├── 1a
│   │   └── eb4e8099c7be4e1f6d3a19f67f984b7f8c84f7.debug
│   ├── 4c
│   │   └── 87efff7047c22be230cee0e46e02d5381176e4.debug
│   ├── 58
│   │   └── 379515d1cca66570c1f35281cea7801b09123b.debug
│   ├── 64
│   │   └── 6eb686ac2bdfec84a935d8e87aee7b31003764.debug
│   └── 76
│       └── 600b49bcd7f52abe72e54bca385de322f175a2.debug
└── .dwz
    └── x86_64-linux-gnu
        ├── libssl3.debug

このデバッグファイルはどのELFバイナリに対応していますか.build-idlibcrypto.so.3または、対応するデバッグシンボルがないのはなぜですかlibssl.so.3

多くのデバッグパッケージが自動的に作成され、空になる可能性があることを読みました。ただし、*.debugこれらのファイルが何であるか、シンボルの使用方法(さまざまな共有オブジェクトで利用可能な場合)を理解できる場合は役立ちます。

ベストアンサー1

デバッグファイルは、一致するビルドIDを持つバイナリに対応します。ビルドIDを見つけるにはeu-readelf(パッケージでelfutils)を使用してください。たとえば、私のシステムでは以下を使用します。

$ eu-readelf -n /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1

Note section [ 1] '.note.gnu.build-id' of 36 bytes at offset 0x238:
  Owner          Data size  Type
  GNU                   20  GNU_BUILD_ID
    Build ID: 0c53740d5c74564b10ffdc9b15aa30961bd7221d

ビルドIDの最初の2桁の16進数は下のディレクトリにマップされ、.build-id残りは特定の.debugファイルにマップされます。

おすすめ記事