RPMでdebuginfoパッケージを使用する方法を明確にしたいと思います。このパッケージがあり、vim
クラッシュが発生したとします。この競合をデバッグしたいが行番号情報にアクセスできないというエラーがgdb
発生します。gdb
私の考えには2つのオプションがあります。
- デバッグ情報パッケージのインストール
vim
CFLAGS
、CXXFLAGS
および同様のコマンドをLDFLAGS
使用してrpmを再構築してインストールします。-g3
私は最近オプション#1を試しましたが、まだgdbに欠落しているシンボルに関するいくつかのエラーが発生し、debuginfoパッケージが何であるか、それを使用する方法についていくつかの仮定をしたときに問題が発生しました。上記のオプション1とオプション2の違いを説明してもよろしいですか?それとも私が間違っているなら、正しく行う方法は何ですか?
答え1
私は最近オプション#1を試しましたが、まだgdbに欠落しているシンボルに関するいくつかのエラーが発生し、debuginfoパッケージが何であるか、それを使用する方法についていくつかの仮定をしたときに問題が発生しました。
競合は、アプリケーション自体ではなく、glibcまたはvimが依存する他のライブラリで発生する可能性があります。これは、すべての関連ライブラリに対してdebuginfoパッケージをインストールする必要があることを意味します。
これはまた、ソースからvimをビルドすると同じ問題が発生する可能性が高いことを意味します。一部のデバッグシンボルを確認できません。また、パッケージを直接ビルドする場合、コンパイルフラグはFedoraが使用するものとは異なるため、同じ競合が発生したり発生しない可能性があります。
答え2
@Artemが正しいです。すべての遷移的依存関係に対してdebuginfoが必要です。
それらのすべてを見つけることは痛いかもしれません。 ABRT( ) を使用すると、dnf install abrt
簡単にこれを達成できます。競合が発生すると、ABRTはそれを記録します。私のシステムの例は次のとおりです。
$ abrt
071eb9c 1x /usr/libexec/mysqld 2020-06-24 00:55:09
7552a02 1x mariadb 2020-06-26 15:37:45
$ abrt backtrace 071eb9c
Problem has no backtrace
Start retracing process? [y/N] y
Upload core dump and perform remote retracing? (It may contain sensitive data). If your answer is 'No', a stack trace will be generated locally. Local retracing requires downloading potentially large amount of debuginfo data [y/N] n
Local retracing
Analyzing coredump 'coredump'
Cleaning cache...
Cache cleaning has finished
...