TL;DR: libwebkitgtk-3.0-0-dbgをインストールすると、必要なデバッグ シンボルが得られます。
##デバッグ シンボルの場合、通常はソースからインストールする必要はありません。
ご存じのとおり、自分で構築しているソフトウェアのデバッグ シンボルを取得するには、GCC を で実行できます-g
。
オペレーティング システムのパッケージ マネージャー (libwebkitgtk-3.0-0
ここには が含まれています) を介してインストールされたソフトウェアの場合、少なくとも公式パッケージの場合、通常、デバッグ シンボルを提供するパッケージもあります。
でシンボリック スタック トレースを取得するために、プログラムまたはライブラリのデバッグ ビルドを実際に行う必要はありませんgdb
。gdb
では、「アドオン」デバッグ シンボルを提供するファイルもサポートしています/usr/lib/debug
。
質問のタグによると、Ubuntuを使用しています。-dbg
Ubuntu では、デバッグ シンボル パッケージはとの 2 種類で利用できます-dbgsym
。にあるプログラムまたはライブラリは、 でデバッグ シンボルを取得します。/path
/usr/lib/debug/path
##-dbg
パッケージ
これらのパッケージは、多くの場合、実際の実行可能ファイルまたはライブラリ ファイルを提供する対応するパッケージとは異なる名前が付けられています。-dev
多くの場合、パッケージ (ヘッダー ファイルを提供する) およびパッケージに似た名前が付けられ-doc
ます。パッケージの-dbg
名前に含まれるライブラリのバージョン番号は、実際のライブラリ パッケージよりも少ない場合があり、他の複数のパッケージで提供されるバイナリをカバーする場合があります。
たとえば、libgtkmm-3.0-1
の対応する-dbg
パッケージはlibgtkmm-3.0-dbg
です。
一方、-dbg
パッケージは、それが提供するシンボルを持つパッケージと同じ名前が付けられることがあります (-dbg
サフィックスを除く)。たとえば、libwebkitgtk-3.0-0
の対応する-dbg
パッケージはlibwebkitgtk-3.0-0-dbg
です。 それはあなたが望むものです。
ソフトウェアセンターにインストールするか、次を実行してインストールできます。
sudo apt-get update && sudo apt-get install libwebkitgtk-3.0-0-dbg
が提供するライブラリにリンクするプログラムをデバッグするとlibwebkitgtk-3.0-0
、gdb
が提供するファイルからシンボルが自動的に読み込まれlibwebkitgtk-3.0-0-dbg
ます。
##-dbgsym
パッケージ
公式パッケージによって提供されるバイナリ実行可能ファイルには、どの-dbg
パッケージにもシンボルが含まれていないことがあります。これが発生した場合、通常は-dbgsym
パッケージをインストールできます。
パッケージとは異なり-dbg
、-dbgsym
パッケージ:
- プログラムまたはライブラリ自体を提供するパッケージの
X-dbgsym
場所は、ほとんどの場合、単純に (そして予想どおり) 名前が付けられています。X
- 対応するプログラム/ライブラリ パッケージおよびパッケージを提供するものと同じソフトウェア ソースではなく、特別なソフトウェア ソース (リポジトリ) によって提供され
-dbg
ます。
パッケージは別々のリポジトリにあるため-dbgsym
、これらのリポジトリを有効にする必要があります。彼らの DEB 行は次のとおりです。
deb http://ddebs.ubuntu.com YOUR_RELEASE main restricted universe multiverse
deb http://ddebs.ubuntu.com YOUR_RELEASE-updates main restricted universe multiverse
deb http://ddebs.ubuntu.com YOUR_RELEASE-security main restricted universe multiverse
deb http://ddebs.ubuntu.com YOUR_RELEASE-proposed main restricted universe multiverse
それらを有効にするには、次のコマンドを実行できます ( 「Ubuntu ドキュメント wiki への貢献者」セクション 2によるDebuggingProgramCrashから適応):
echo "deb http://ddebs.ubuntu.com $(lsb_release -cs) main restricted universe multiverse
deb http://ddebs.ubuntu.com $(lsb_release -cs)-updates main restricted universe multiverse
deb http://ddebs.ubuntu.com $(lsb_release -cs)-security main restricted universe multiverse
deb http://ddebs.ubuntu.com $(lsb_release -cs)-proposed main restricted universe multiverse
" | sudo tee -a /etc/apt/sources.list.d/ddebs.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 428D7C01
sudo apt-get update
開発リリース (アルファ版またはベータ版) を使用している場合は、イタリック体の行を省略してください。ただし、安定したリリースを引き続き使用する場合は、必ず追加してください。
これらのコマンドは、次の 3 つのことを行います。
- ファイル
/etc/apt/sources.list.d/ddebs.list
(DEB 行を含む) を作成します。
- これらのリポジトリの署名キーをインポートします。
- どのパッケージとバージョンがどこからインストールできるかについて、システムの情報を更新します。
-dbgsym
したがって、提供されたシンボルの代わりに-dbg
提供されたシンボルを使用したい場合、 の-dbgsym
パッケージlibwebkitgtk-3.0-0
は (上記の単純な命名規則に従って)libwebkitgtk-3.0-0-dbgsym
です。
-dbg
とパッケージの両方を-dbgsym
同じシステムにインストールできますが、それらが同じファイルのシンボルを提供する場合はインストールできません。それでlibwebkitgtk-3.0-0-dbg
、libwebkitgtk-3.0-0-dbgsym
互いに対立します。両方を (同時に) インストールすることはできません。
##シンボルの使用
ほとんどの Unix ライクな OS では、デバッガーはインストールされているシンボルを自動的に探します。Ubuntu も例外ではありません。Ubuntu では、 でgdb
自動的に検索されます/usr/lib/debug
。したがって、特別なことをする必要はありません。
ただし、gdb
特定のデバッグ シンボル ファイルを読み込むように指示する必要がある場合は、フラグを使用します。詳細については、GNU のマニュアルとgdb(1)を参照してください。-s file