TL;DR: libwebkitgtk-3.0-0-dbg
をインストールすると、必要なデバッグ シンボルが得られます。
##デバッグ シンボルの場合、通常はソースからインストールする必要はありません。
ご存じのとおり、自分で構築しているソフトウェアのデバッグ シンボルを取得するには、GCC を で実行できます-g。
オペレーティング システムのパッケージ マネージャー (libwebkitgtk-3.0-0ここには が含まれています) を介してインストールされたソフトウェアの場合、少なくとも公式パッケージの場合、通常、デバッグ シンボルを提供するパッケージもあります。
でシンボリック スタック トレースを取得するために、プログラムまたはライブラリのデバッグ ビルドを実際に行う必要はありませんgdb。gdbでは、「アドオン」デバッグ シンボルを提供するファイルもサポートしています/usr/lib/debug。
質問のタグによると、Ubuntuを使用しています。-dbgUbuntu では、デバッグ シンボル パッケージはとの 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