Linux
CentOS
fedora
redhat
デバッグ

RedHat 系 Linux で任意パッケージのデバッグシンボルを取得する方法

タイトルのとおりです 1

RHEL、CentOS、Fedora といった RedHat 系ディストリビューション環境で任意のパッケージのバッグシンボルを取得するための方法を記載しています。

なお本稿では free のパッケージである procps-ng のデバッグシンボルを取得するまでを一例として挙げています。


検証環境

[root@hst ~]# uname -r

4.18.11-200.fc28.x86_64

[root@hst ~]# cat /etc/fedora-release
Fedora release 28 (Twenty Eight)

上記のとおり、検証環境は Fedora ですが、以降の手順は RHEL や CentOS でも使えるはずです。ただし、RHEL, CentOS, Fedora(21以前)の標準のパッケージマネージャは dnf ではなく yum なので、その点は注意です(具体的なコマンドは併せて載せています)。


1 デバッグシンボルの取得方法

主な流れは次のとおりです。


  • デバッグしたいコマンドのパッケージ名を確認

  • デバッグしたいパッケージのデバッグシンボルをインストール


1-1 事前準備

はじめに必要なコマンドのパッケージをインストールします。

// Fedora(22以降)の場合

なし

// RHEL, CentOS, Fedora(21以前)の場合
[root@hst ~]# yum install yum-utils

次にデバッグしたいコマンドのパッケージ名を確認します(本稿では free コマンドが対象)。

[root@hst ~]# rpm -qf $(which --skip-alias free)

procps-ng-3.3.12-3.fc28.x86_64

※ .fc28.x86_64 はご使用の環境により変化します。


1-2 デバッグシンボル取得手順

事前準備で確認したパッケージのデバッグシンボルをインストールします。

// Fedora(22以降)の場合

[root@hst ~]# dnf debuginfo-install procps-ng-3.3.12-3.fc28.x86_64

// RHEL, CentOS, Fedora(21以前)の場合
[root@hst ~]# debuginfo-install procps-ng-x.x.xx-x.xxx

コマンドを実行すると次のように <pkg>-debuginfo と <pkg>-debugsource をインストールしようとします。

Dependencies resolved.

===================================================================================================================================================================================================================
Package Arch Version Repository Size
===================================================================================================================================================================================================================
Installing:
procps-ng-debuginfo x86_64 3.3.12-3.fc28 updates-debuginfo 382 k
Installing weak dependencies:
procps-ng-debugsource x86_64 3.3.12-3.fc28 updates-debuginfo 229 k

Transaction Summary
===================================================================================================================================================================================================================
Install 2 Packages

Total download size: 611 k
Installed size: 2.3 M
Is this ok [y/N]: y

念のためデバッグシンボルが読み込まれるか確認します。

[root@hst ~]# gdb -q free

Reading symbols from free...Reading symbols from /usr/lib/debug/usr/bin/free-3.3.12-3.fc28.x86_64.debug...done.
done.

上記のように表示されていれば、そのままデバッグできるはずです。もし、(no debugging symbols found)...done. と表示されている(デバッグシンボルが読み込まれていない)場合は、次のコマンドを実行し、パッケージがインストールされているかご確認ください。

[root@hst ~]# rpm -qa | grep procps-ng

procps-ng-debugsource-3.3.12-3.fc28.x86_64
procps-ng-debuginfo-3.3.12-3.fc28.x86_64
procps-ng-3.3.12-3.fc28.x86_64

以上です。





  1. 元々こちらの記事と一緒にしていましたが、わかりずらかったので分けました。