Debian 9: デバッグシンボルのdbgsymでパッケージをデバッグする


Table of Contents

1 debian-debugリポジトリを追加する

debigan-debugリポジトリを追加します。

$ cat <<EOF | sudo tee /etc/apt/sources.list.d/dbgsym.listdeb http://debug.mirrors.debian.org/debian-debug/ stretch-debug mainEOF$ sudo apt update -y

2 dbgsymをインストールする

dbgsymというサフィックスが付いているパッケージがデバッグシンボルです。

<pkg>-dbgsym

この記事ではcoreutilsのデバッグシンボルをインストールします。

$ sudo apt install -y coreutils-dbgsym

デバッグシンボルは/usr/lib/debugに格納されます。GDBは/usr/lib/debugを自動的に走査します。

$ dpkg -L coreutils-dbgsym/./usr/usr/lib/usr/lib/debug/usr/lib/debug/.build-id/usr/lib/debug/.build-id/04/usr/lib/debug/.build-id/04/7a2dfd63f9e20b837c04e874b56b47b60f564a.debug/usr/lib/debug/.build-id/09/usr/lib/debug/.build-id/09/16ef8fc767ab302f1468c5c515929f313b9e54.debug/usr/lib/debug/.build-id/0a<snip>

3 パッケージをデバッグする

GDBをインストールします。

$ sudo apt install -y gdb

coreutilsのソースコードをインストールします。

$ mkdir coreutils$ cd coreutils$ apt source coreutils-dbgsym$ cd ./coreutils-*

GDBでcoreutilsのlsコマンドをデバッグします。

$ gdb ls(gdb) la src(gdb) b main(gdb) r

main関数でブレークしました。

0001_dbgsym.png

Android | Linux | SDL - Narrow Escape